Как я могу создать кнопку “Да всем” с помощью WinAPI?
Вопрос
У нас есть устаревшее приложение, написанное на C, которое использует WinAPI.Мы хотели бы добавить кнопку "Да для всех" в несколько наших диалоговых окон.К сожалению, существующая функция MessageBox не допускает использования пользовательских кнопок или подписей к кнопкам.
Каков наилучший способ сделать это?Есть ли хитрый способ легко добавить пользовательскую кнопку?Или нам следует создать нашу собственную замену MessageBox?
Решение 4
Мы завершили создание собственного шаблона замены ресурса DIALOGEX, затем просто вызвали DialogBox () и проверили возвращаемое значение.
Ссылка: http://msdn.microsoft.com /library/ms644996(v=VS.85).aspx#modal_box р>
Другие советы
Может быть, что-то в этом роде? http://www.codeproject.com/KB/dialog/CRHYesNoToAllDialog.aspx
Или это: Использование перехватов Windows для улучшения MessageBox в .NET
Марк
В WinAPI существует другой вид окна сообщений, начиная с Windows 2000. Это SHMessageBoxCheck
.
Он позволяет отображать стандартный MB_OKCANCEL
/ MB_YESNO
/ MB_OK
-типа MessageBox
с опцией Никогда больше не показывать, указав, какой вариант по умолчанию в этом случае.
Может быть, это не совсем то, что вы ищете, но это вполне соответствует интерфейсу Windows.
В Vista большинство оболочек " Да, всем " диалоги на самом деле работают таким образом - нет дополнительной кнопки с надписью «Да / Нет для всех» - есть «Выполнить выбранное действие для всех элементов». установите флажок.
Однако примечание в документации меня беспокоит:
Эта функция доступна в Microsoft Windows XP и Windows Server 2003. Она может быть изменена или недоступна в последующих версиях Windows.
Возможно, вам также потребуется позаботиться о переносе текста, чтобы он был похож на MessageBox
. Также MessageBox
использует другой шрифт по сравнению со шрифтом GUI по умолчанию. И не забудьте воспроизвести звук, когда появится диалоговое окно :)