




Вы не можете этого сделать со стандартным вызовом MessageBox. Для этого вам нужно будет реализовать свой собственный MessageBox.
Я не верю, что это возможно с помощью стандартного вызова окна сообщения.
Вам, вероятно, будет лучше написать собственное окно сообщения, которое включает эту функцию.
(Или вы можете написать отдельный поток, который постоянно следит за экраном, ожидая появления этого окна сообщения, отключить кнопку повтора, подождать 10 секунд и снова включить ее. Не весело. Серьезно, сделайте это по-другому.)
Как говорит @ffpf, для этого вам нужно создать свой собственный диалог, используя MFC, ATL, raw Win32 и т. д.
Затем создайте таймер, который будет включать и отключать кнопку.
Начиная с Vista вы можете использовать taskdialog - более сложный диалог, чем простое окно сообщения. Подробнее и ссылки здесь.
Не похоже, что вы действительно можете включать и отключать кнопки, только (потенциально) добавлять и удалять.
Вы не можете напрямую манипулировать элементами управления MessageBox, но можете воспользоваться хакерским приемом. Установите обработчик WH_CBT непосредственно перед отображением диалогового окна и обработайте событие HCBT_ACTIVATE. Это даст вам HWND окна сообщения, чтобы вы могли делать с ним все, что захотите (создать подкласс, управлять его кнопками и установить таймер).
Вы можете найти учебник Пользовательское окно сообщений с демонстрационным кодом на сайте Джеймса Брауна.
Я согласен с efotinis, это не невозможно, если у вас есть HWND, вы можете делать с ним все, что захотите. Это просто вопрос: «Вам действительно нужны хаки или вам лучше просто создать свое собственное диалоговое окно с сообщением»?
Другой не очень хороший способ найти HWND (который, очевидно, даст вам доступ ко всему в окне сообщения) - это запустить поток и циклически опрашивать дескриптор окна сообщения с помощью EnumChildWindows. Но я лично предпочел бы также ловушку WH_CBT.
И даже без Vista диалоговое окно задачи - гораздо лучший подход, чем окно сообщения. Есть некоторые реализации, которые работают в системах до Vista, и их не так уж сложно реализовать, если вам не нужны все функции сразу.