在实际开发中,可能会碰到这样一个场景:使用Windows系统下的MessageBox给出提示信息时,按钮的显示内容是Windows已经设定好的,无法更改。比如,在中文系统下,IDOK对应的按钮内容为“确定”,IDCANCLE对应的按钮内容为“取消”。在实际应用开发中,有时候需要MessageBox按钮上显示我们自己想要显示的内容,这时候就得想办法更改Windows系统默认的MessagBox按钮内容了。当然,你也可以重新制作一个自己的MessageBox,本文在这里只介绍一个更改Windows系统下默认的MessageBox按钮内容的方法。贴一段代码如下:
LRESULT CALLBACK CBTHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
HWND hwnd = (HWND)wParam;
if(nCode == HCBT_ACTIVATE)
{
if(... ...)
{
SetDlgItemText(hwnd,IDOK,L"按钮内容");
SetDlgItemText(hwnd,IDCANCEL,L"按钮内容");
}
else
{
SetDlgItemText(hwnd,IDOK,L"按钮内容");
SetDlgItemText(hwnd,IDCANCEL,L"按钮内容");
}
}
return 0;
}
int MyMessageBox(HWND hwnd, TCHAR *szText, TCHAR *szCaption, UINT uType)
{
int ret;
HHOOK hHook = SetWindowsHookEx(
WH_CBT,
CBTHookProc,
NULL,
GetCurrentThreadId()
);
ret = MessageBox(hwnd, szText, szCaption, uType);
UnhookWindowsHookEx(hHook);
return ret;
}