Win32 настраиваемое окно сообщения - PullRequest
7 голосов
/ 21 октября 2011

Я хочу создать собственное сообщение.Я хочу настроить текст кнопки.

MessageBoxW(
  NULL,
  L"Target folder already exists. Do you want to overwrite the folder?",
  L"No title",
  MB_YESNOCANCEL | MB_ICONQUESTION
  );

Я бы хотел просто изменить текст кнопки на Overwrite, Skip, Cancel.
Какой самый простой способ?

Я должен сделать так, чтобы он выглядел одинаково с окном сообщений Windows по умолчанию.

Ответы [ 4 ]

7 голосов
/ 21 октября 2011

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

Тем не менее, есть еще один вариант для тех, кто хочет погрузиться в сложные вещи.Хотя MessageBox API не предлагает много возможностей для настройки финтов, у вас все еще есть SetWindowsHookEx в ваших руках.Зарегистрировав хук, вы можете перехватить стандартную оконную процедуру MessageBox и создать ее подкласс по своему вкусу.

К типичным вещам относятся:

  • изменение текста кнопки
  • добавление дополнительных элементов управления
  • добавление автоматического закрытия по времени

Подключить стандартное окно может все это.

UPD.Эй, я понял, что у меня есть код с SetWindowsHookEx, которым можно поделиться: http://alax.info/blog/127

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

Вы можете создать собственный диалог.Или вы можете использовать оконный хук, как описано в этой статье .

1 голос
/ 21 октября 2011

Создайте ресурс диалога (с помощью графического редактора или вручную) и вызовите DialogBox.Нет никакого способа изменить поведение MessageBox, кроме того, что поддерживается его аргументами.

Тем не менее, ваше окно сообщения может очень хорошо использовать стандартные параметры Да / Нет.

0 голосов
/ 21 октября 2011

Представленная в Vista функциональность в диалоговом окне делает именно то, что вам нужно, и следует преобладающей системной теме. Однако, если вам нужно поддерживать XP, это не принесет вам особого комфорта.

...