Как я могу создать кнопку «Да для всех» с помощью WinAPI? - PullRequest
5 голосов
/ 04 мая 2009

У нас есть старое приложение, написанное на C, которое использует WinAPI. Мы хотели бы добавить кнопку «Да ко всем» в несколько наших диалоговых окон. К сожалению, существующая функция MessageBox не позволяет использовать пользовательские кнопки или заголовки кнопок.

Какой лучший способ сделать это? Есть ли хитрый взлом, чтобы легко добавить пользовательскую кнопку? Или мы должны создать собственную замену MessageBox?

Ответы [ 4 ]

2 голосов
/ 21 сентября 2011

Возможно, вам также потребуется позаботиться о переносе текста, чтобы он был похож на MessageBox. Также MessageBox использует другой шрифт по сравнению со шрифтом GUI по умолчанию. И не забудьте воспроизвести звук, когда появится диалоговое окно :)

2 голосов
/ 05 мая 2009

Существует еще один вид окна сообщения в WinAPI, начиная с Windows 2000. Это SHMessageBoxCheck.

Позволяет отображать стандартный MB_OKCANCEL / MB_YESNO / MB_OK -тип MessageBox с параметром Никогда не показывать его снова, указав, какой вариант по умолчанию в этом случае является.

Может быть, это не совсем то, что вы ищете, но это вполне соответствует Windows UI.

В Vista большинство диалоговых окон оболочки «Да для всех» на самом деле работают именно так - нет дополнительной кнопки с надписью «Да / Нет для всех» - вместо этого есть флажок «Выполнить выбранное действие для всех элементов».

Однако примечание в документации меня беспокоит:

Эта функция доступна в Microsoft Windows XP и Windows Server 2003. Она может быть изменена или недоступна в последующих версиях Windows.

2 голосов
/ 04 мая 2009
1 голос
/ 21 сентября 2011

Мы закончили с созданием собственного шаблона ресурса замены DIALOGEX, затем просто вызвали DialogBox () и проверили возвращаемое значение.

Ссылка: http://msdn.microsoft.com/library/ms644996(v=VS.85).aspx#modal_box

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...