更改Windows系統下的MessageBox按鈕顯示內容
阿新 • • 發佈:2019-01-24
在實際開發中,可能會碰到這樣一個場景:使用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; }