MFC如何改变消息框的三个按钮的文本值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC如何改变消息框的三个按钮的文本值相关的知识,希望对你有一定的参考价值。

例如:MessageBox(_T("是否重新测试?"), _T("IL&RL"), MB_ICONQUESTION | MB_YESNOCANCEL);显示“是”,“否”,“取消”,我想改为“重测”,“继续”,“取消”。哪位大神指点一下

MessageBox 上的按钮文字并不能直接修改,一种方法可以使用钩子,间接修改按钮上的文字,另一种就是自己做一个类似 MessageBox 功能的对话框。

下面的例子是使用钩子做的,关键代码如下:


// 定义一个钩子句柄
HHOOK hMsgBoxHook;

// 定义CBT钩子过程
LRESULT CALLBACK MsgBoxCBTProc(int nCode, WPARAM wParam, LPARAM lParam)

switch (nCode) 
case HCBT_ACTIVATE:
HWND hWnd = (HWND)wParam;
SetDlgItemText(hWnd, IDYES, _T("重测"));
SetDlgItemText(hWnd, IDNO, _T("继续"));
SetDlgItemText(hWnd, IDCANCEL, _T("取消"));
return 0;


return CallNextHookEx(hMsgBoxHook, nCode, wParam, lParam);


// 定义一个 MsgBox 函数
int MsgBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType)

hMsgBoxHook = SetWindowsHookEx(WH_CBT, MsgBoxCBTProc, NULL, GetCurrentThreadId());

int ret = MessageBox(hWnd, lpText, lpCaption, uType);

UnhookWindowsHookEx(hMsgBoxHook);

return ret;


void Cdemo5Dlg::OnBnClickedButton1()

// 调用 MsgBox
MsgBox(GetSafeHwnd(), _T("是否重新测试?"), _T("IL&RL"), MB_ICONQUESTION | MB_YESNOCANCEL);

运行结果:

参考技术A 自定义一个输出窗口, 增加一个MSGBOX函数用于显示该窗口, 你想怎么改都可以

MFC中在指定的文档搜索 输入框中的指定内容并显示到指定的文本框中的按钮代码该怎么写啊?在线等

MFC中在指定的文本文档中搜索 输入框中的指定内容并显示到指定的文本框中的按钮代码该怎么写?在编辑框输入想要搜索的内容,点击搜索按钮,如果有匹配的则在指定的文本框中显示,如果无则弹出消息框。

实现起来不难,我估计你是不太清楚MFC的显示那一块,至于读取和匹配,那是C语言的基本功,应该不用多说。显示和按钮控制部分:

    编辑框使用classwizard定义一个CString型变量,如m_edit1;

    文本框使用classwizard定义一个CString型变量,如m_edit2;

    用classwizard给按钮增加一个消息响应函数,OnClick。

    在OnClick函数中编写内容。首先调用UpdateData(TRUE),获取编辑框中的文本,此时文本已保存到m_edit1中。然后将m_edit1与文本文档中读取的数据进行模式匹配,若匹配合格,则将文本文档中读取的数据赋值给m_edit2,否则将空值赋给m_edit2;之后调用UpdateData(FALSE),完成文本框的显示更新。

    终于打完了,做完今天的百度任务,睡觉了。

参考技术A 给你个例子,往哪里发?qq1819359253

以上是关于MFC如何改变消息框的三个按钮的文本值的主要内容,如果未能解决你的问题,请参考以下文章

MFC中如何给编辑框设置文本内容?

MFC中在指定的文档搜索 输入框中的指定内容并显示到指定的文本框中的按钮代码该怎么写啊?在线等

猎豹MFC--消息映射

C语言中messagebox的用法

MFC 使用CreateEx创建了一个编辑框之后,如何动态响应编辑框的值变化?

MFC编程入门之二十一(常用控件:编辑框Edit Control)