修改MessageDlg窗口Ok/Cancel为“确定/取消”是提示错误
参考妖哥的一个程序,我现在想把MessageDlg对话框的Ok/Cancel修改为汉字“确定/取消”,但是会出现如何提示:
- C/C++ code
//修改Ok/Cancel按钮显示为中文HANDLE hBtnOk = FindWindowEx(Form1 -> Handle, NULL, "TButton", "OK");HANDLE hBtnCancel = FindWindowEx(Form1 -> Handle, NULL, "TButton", "Cancel");if(hBtnOk) { SetWindowText(hBtnOk, "确定(&O)"); }if(hBtnCancel) { SetWindowText(hBtnCancel, "取消(&C)"); }提示:
- C/C++ code
[BCC32 Error] Unit1.cpp(350): E2034 Cannot convert 'void *' to 'HWND__ *'[BCC32 Error] Unit1.cpp(350): E2342 Type mismatch in parameter 'hWnd' (wanted 'HWND__ *', got 'void *')
我自己也查看了MSDN的SetWindowText function,
- C/C++ code
BOOL WINAPI SetWindowText( __in HWND hWnd, __in_opt LPCTSTR lpString);
LPCTSTR类型不是字符串型吗,为何会提示void型。还请大家指点迷津。非常感谢。
[解决办法]
你把hBtnOk和hBtnCancel定义成HWND类型的就可以了,或者强制转换一下,如:
SetWindowText((HWND)hBtnOk, "确定(&O)");