Win32自定义消息框

我想制作一个自定义消息框。 我想要自定义的是button的文本。

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

我想只是改变button文本OverwriteSkipCancel
什么是最简单的方法?

我必须使这与Windows默认消息框具有相同的外观和感觉。

Solutions Collecting From Web of "Win32自定义消息框"

正如别人所说,一个典型的方法是创建一个对话框资源,并有一个完全独立的对话框,你需要设计的图形用户界面看起来像标准对话框(以满足您的感觉和期待的要求)的方式。 如果你想接受短信,你可能需要添加代码来适当调整窗口的大小。

不过,对于那些喜欢深入研究先进技术的人来说,还有另一种选择。 虽然MessageBox API不提供太多的fint调整,但您仍然拥有SetWindowsHookEx 注册钩子后,您可以拦截标准的MessageBox窗口过程,并以您喜欢的方式对其进行子类化。

典型的事情包括:

  • 改变按钮文本
  • 增加更多的控制
  • 添加定时自动关闭

挂钩标准窗口可以做所有这些。

UPD。 嘿,我意识到我有一些代码与SetWindowsHookEx共享: http : //alax.info/blog/127

你可以创建一个自己的对话框。 或者您可以使用本文所述的窗口挂钩。

创建一个对话框资源(使用GUI编辑器,或者手动),并调用DialogBox 没有办法改变MessageBox行为,除了它的参数支持。

也就是说,你的消息框可以非常好地使用股票是/否选项。

在Vista中引入的任务对话框功能正是你想要的,并遵循主流的系统主题。 但是,如果你不得不支持XP,那么这对你来说会很不舒服。