controls & Tab

Тема в разделе "WASM.WIN32", создана пользователем techgl, 18 авг 2004.

  1. techgl

    techgl New Member

    Публикаций:
    0
    Регистрация:
    5 авг 2004
    Сообщения:
    42
    Как в диалоговом окне "включить" перемещение между элементами диалога по клавише Tab. Это прописывается в свойствах элемента или в свойствах диалога? Или надо использовать какую API функцию?
     
  2. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Добавить элементам окна стиль WS_TABSTOP
     
  3. techgl

    techgl New Member

    Публикаций:
    0
    Регистрация:
    5 авг 2004
    Сообщения:
    42
    -> Asterix

    Я добавлял. Но когда программу запускаешь, все равно курсор в первом edit control и по клавише Tab никуда не перемещается. Вот кусок файла ресурсов:



    EDITTEXT IDC_EDIT4,45,90,60,12,ES_LOWERCASE | ES_READONLY | WS_TABSTOP



    EDITTEXT IDC_EDIT5,115,90,45,12,ES_LOWERCASE | ES_READONLY | WS_TABSTOP



    EDITTEXT IDC_EDIT6,115,45,45,12,ES_LOWERCASE | WS_TABSTOP



    EDITTEXT IDC_EDIT7,5,212,292,15,ES_READONLY |WS_TABSTOP



    Диалоговое окно создаю так(для простоты вызов на Си):

    CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),

    NULL, (DLGPROC)DialogProc);



    Вот, на всякий случай, параметры самого окна:



    IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 401, 237

    STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP |

    WS_VISIBLE | WS_CAPTION | WS_SYSMENU



    Где ошибка?
     
  4. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    techgl

    Что возвращаешь из WM_INITDIALOG?
     
  5. techgl

    techgl New Member

    Публикаций:
    0
    Регистрация:
    5 авг 2004
    Сообщения:
    42
    q_q

    Все как описано в SDK: возвращаю TRUE. Кстати, там никакие функции вызывать не надо? Я читал, что обычно при обработке этого сообщения центрируют окно(у меня в параметрах окна уже стоит опция "центрирование") и, если нужно, инициализируют элементы управления( в моем случае это не нужно).
     
  6. techgl

    techgl New Member

    Публикаций:
    0
    Регистрация:
    5 авг 2004
    Сообщения:
    42
    .Отбой.



    Ошибка была в неправильной обработке сообщений. Я обрабатывал так: GetMessage->TranslateMessage->DispatchMessage. А правильно - через IsDialogMessage.



    Только вот что осталось "за кадром": почему при "неправильной" обработке сообщений, они все равно поступают в процедуру диалогового окна(WM_COMMAND, WM_CLOSE, etc)?
     
  7. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    может из-за того, что если в eax - 0, то это сообщение продолжает дальше рассылаться?



    у меня в программе баг (все никак не исправлю ;) если кнопка с фокусом становится disabled - с нее хрен табом уйдешь.