1. 程式人生 > >更改Windows系統下的MessageBox按鈕顯示內容

更改Windows系統下的MessageBox按鈕顯示內容

        在實際開發中,可能會碰到這樣一個場景:使用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;
}