Сделал обыкновенное (ws_overlapped) окно, изображающее собой диалог.
Чтобы работали кнопки, полагающиеся диалогу (tab, стрелки) вызываю в цикле обработки IsDialogMessage.
Все работает, пока какой-нибудь контрол не получает фокус. Тогда все положенные кнопки перестают действовать. Анализ показал, что контролы просто обрабатывают сами нажатия кнопок и не отдают их окну.
Удивительно, но в настоящих диалоговых окнах контролы работают правильно.
Кто-нибудь знает, в чем дело?
Или хотя бы сможет объяснить внутреннюю машинерию контролов Windows.
Здравствуйте, Юрий Жиловец, Вы писали:
ЮЖ>Сделал обыкновенное (ws_overlapped) окно, изображающее собой диалог.
А чем не устраивает CreateDialog? Или ты её и используешь, просто я не понял?
ЮЖ>Чтобы работали кнопки, полагающиеся диалогу (tab, стрелки) вызываю в цикле обработки IsDialogMessage. ЮЖ>Все работает, пока какой-нибудь контрол не получает фокус. Тогда все положенные кнопки перестают действовать. Анализ показал, что контролы просто обрабатывают сами нажатия кнопок и не отдают их окну. ЮЖ>Удивительно, но в настоящих диалоговых окнах контролы работают правильно. ЮЖ>Кто-нибудь знает, в чем дело? ЮЖ>Или хотя бы сможет объяснить внутреннюю машинерию контролов Windows.
А небось меняет им всем оконные процедуры, и в них обрабатывает всё, что нужно.
Здравствуйте, SergH, Вы писали:
SH>Здравствуйте, Юрий Жиловец, Вы писали:
ЮЖ>>Сделал обыкновенное (ws_overlapped) окно, изображающее собой диалог.
SH>А чем не устраивает CreateDialog? Или ты её и используешь, просто я не понял?
Я пишу библиотеку а ля TCL. Мне надо на ходу ставить и убирать контролы на окно. Ресурсы здесь не пройдут.
Ошибку, кстати, я сегодня нашел. Неправильный вызов IsDialogMessage.
Надо передавать msg и дескриптор нужного окна. А я окно из самого msg доставал. Результат оказался сомнительным.
Здравствуйте, SergH, Вы писали:
SH>Здравствуйте, Юрий Жиловец, Вы писали:
ЮЖ>>Я пишу библиотеку а ля TCL. Мне надо на ходу ставить и убирать контролы на окно. Ресурсы здесь не пройдут.
SH>Ясно. Кстати, есть ещё и CreateDialogIndirect — вдруг пригодится..
Не. Во-первых, очень некрасиво и неудобно. А во-вторых, опять же динамики не получится. Там раз нарисовал и все.