怎样才能改变AfxMessageBox提示框确定按钮上的文字
解决方案 »
- 我了个去,sendmessage这样对我
- CScrollView的CREATE 函数参数都是什么意思
- 'dlg' was corrupted错误求助
- 成都男子成功将“微软”注册成卫生用品商标
- 数据库存入图象问题
- 请问:如果我想把数据分行在视图上显示,应该如何做,谢谢,在线等!~
- 江湖救急!!
- 程序连接摄像头不出画面,编译运行都没有bug,请高手解答~
- 块看看下面的CTypedPtrArray 为什么出错!!!!!!!!!!!!!!!!!!!!!
- 函数中按址传递变量,如何赋值?
- 关于VC++技术内幕一书例程7无模式对话框的问题
- 为什么我安装的vc6.0无法显示classview?为什么?我重启了n次也不行?
如果你想做的话,自己建一个与MESSAGE BOX差不多的DIALOG.
至于文字嘛,这时你想怎么改就怎么改了.不过,这有点麻烦,也好像有点笨.不过,我也想不出什么其它的方法了.
MB_OK
MB_OKCANCEL
MB_RETRYCANCEL
MB_YESNO
MB_YESNOCANCEL 提示框中就这么多种, 可以用“|”,如果需要别的按钮就建个自己的对话框吧如:AfxMessageBox("Name",MB_YESNO);
重载AfxMessageBox行吗?
网上找到一篇贴子,不过没看懂:
是的,你能改变该对话框的按钮的标题,但需要一点小小的工作。你要重载DefWindowProc 函数,在调用MessageBox先登记一个窗口消息,然后在你的DefWindowProc(假定为 MyDefWindowProc)。先检查最顶层的窗口是否是同样你登录的消息对话框,如果是的话使用GetWindowLong你能很容易的发现当前的按钮控件并不是一个静态文本控件,用 SetWindowLong函数来改变按钮的文本。代码象这样
LRESULT MyDefwindowProc(...)
{
....
if(uMsg == YourRegisterMessage)
{
// loop for all message box control
for(hwndControl = GetTopWindow(hwndMess);
hwndControl && ((lpstrCaption = *(&((MESSAGE_INFO *)
lParam)->Button1+uLoop)) != NULL);
hwndControl = GetWindow(hwndControl, GW_HWNDNEXT))
{
// if static text, continue.
if (GetWindowLong(hwndControl, GWL_ID) == -1)
continue;
else // change text.
{
SetWindowText(hwndControl, lpstrCaption);
uLoop++;
}
}
SetWindowLong(hwndMess, GWL_HWNDPARENT, (long)hwnd);
.... // other codes line
}
else // if not your register message
DefWindowProc(...);
}