MFC如何改变消息框的三个按钮的文本值
例如:MessageBox(_T("是否重新测试?"),_T("IL&RL"),MB_ICONQUESTION|MB_YESNOCANCEL);显示“是”,“否”,“取消...
例如: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);
}
运行结果:
2018-07-24
展开全部
自定义一个输出窗口, 增加一个MSGBOX函数用于显示该窗口, 你想怎么改都可以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询