2015-08-05 6 views
1

Это пример двух кнопок из диалогового окна Шрифт в Windows:Как установить кнопку по умолчанию при нажатии?

enter image description here

Кнопка OK является кнопкой по умолчанию, если нажать на кнопку кнопку (мыши) Отмена, а затем Отмена будет становятся стандартными.

Как я могу достичь этого в WinAPI, должен ли я обрабатывать событие мыши по каждой кнопке и добавлять к кнопке, которой был нажат стиль BS_DEFPUSHBUTTON, и удалить этот стиль с других кнопок?

+1

Это функция менеджера диалогов. Если вы не хотите использовать диалог, вы можете использовать 'IsDialogMessage' и управлять идентификатором по умолчанию с сообщениями DEFID, указанными ниже. –

ответ

4

Отправить DM_SETDEFID в диалоговом окне, чтобы изменить ID кнопки по умолчанию. Обратите внимание на следующее, хотя:

Использование сообщение DM_SETDEFID может привести к более чем одной кнопки появляясь иметь состояние по умолчанию кнопки. Когда система выводит диалог, она рисует первую кнопку в диалоговом окне с государственной границей по умолчанию. Отправка сообщения DM_SETDEFID для изменения кнопки по умолчанию не всегда приведет к удалению состояния по умолчанию с первой кнопки. В этих случаях применение следует отправить сообщение BM_SETSTYLE изменить первый кнопочный стиль границы

Так как отправка DM_SETDEFID установить новую кнопку по умолчанию, вы должны послать BM_SETSTYLE к старой умолчанию чтобы очистить стиль BS_DEFPUSHBUTTON.

+0

Извините, я забыл упомянуть, что я не использую ресурсы. –

+0

@joseph_m Что значит? У вас нет реального диалога? –

+0

Я использую 'CreateWindowEx()' для создания всех Windows. –

Смежные вопросы