Как я могу создать кнопку “Да всем” с помощью WinAPI?

StackOverflow https://stackoverflow.com/questions/820633

  •  03-07-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение 4

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

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

Другие советы

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

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

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

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

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

  

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top