Re: IsDialogMessage
От: Kochuev  
Дата: 08.12.03 23:04
Оценка: 27 (2)
Я нашел ответ на свой вопрос. Дело в том, что в немодальном окне надо обрабатывать в оконной процедуре сообщение DM_GETDEFID и возвращать ID кнопки по умолчанию. Вот так-то...
IsDialogMessage
От: Kochuev  
Дата: 07.12.03 14:27
Оценка:
Знаю, тема заезженная, но вот тут возник вопрос:

Есть немодальное окно CreateWindow(...)
Мне надо было заставить работать WS_TABSTOP и BS_BEFPUSHBUTTON

Модифицировал цикл выборки сообщений:


    if(!IsDialogMessage(hwnd0, &msg))
    {
        // translate any accelerator keys
        TranslateMessage(&msg);
        // send the message to the window proc
        DispatchMessage(&msg);
    }


Так вот WS_TABSTOP заработал, а кнопка по умолчанию все-равно нажиматься не хочет:


          CreateWindow(
          "BUTTON",                   // class
          "Ok",                       // title
          WS_VISIBLE|WS_CHILD|
          WS_TABSTOP|BS_TEXT|
          BS_DEFPUSHBUTTON,
          23,65,                      // x,y
          60,25,              // size of window
          hwnd0,                      // parent
          NULL,                       // menu
          hMainInstance,              // instance
          NULL);                      // creation parms


Никто не подскажет, в чем дело? Просто очень уж не хочется делать сабклассинг, чтобы перехватить Enter в Edit'е:


          CreateWindow(
          "EDIT",                // class
          NULL,                  // title
          WS_VISIBLE|WS_CHILD|
          ES_AUTOHSCROLL|DS_FIXEDSYS|
      ES_PASSWORD|WS_BORDER|
          WS_TABSTOP, 
          15,35,                 // x,y
          80,                    // size of window
          20,
          hwnd0,                 // parent
          NULL,                  // menu
          hMainInstance,         // instance
          NULL);                 // creation parms
Re: IsDialogMessage
От: adontz Грузия http://adontz.wordpress.com/
Дата: 07.12.03 19:07
Оценка:
Здравствуйте, Kochuev, Вы писали:

Расширенный стиль WS_EX_CONTROLPARENT нужен.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: IsDialogMessage
От: Kochuev  
Дата: 07.12.03 21:27
Оценка:
Здравствуйте, adontz, Вы писали:

A>Расширенный стиль WS_EX_CONTROLPARENT нужен.


Так переключение по TAB и без этого стиля работает (кстати странно: почему?)... Не работает обработка клавиши Enter (не обрабатывается нажатие клавиши по умолчанию). И стиль этот не помогает...
Может быть, дело в IsDialogMessage?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.