BOOL 类型的实参与 DLGPROC 类型的形参不兼容
时间: 2023-09-10 12:13:34 浏览: 181
这个错误通常出现在 Win32 API 编程中,是因为在创建对话框时,函数指针类型不匹配所导致的。DLGPROC 是一个函数指针类型,用于指向对话框过程函数,而 BOOL 是一个布尔类型。
解决方法是将 BOOL 类型的返回值改为 INT_PTR 类型,这样就可以与 DLGPROC 类型的形参兼容了。同时,在对话框创建时,将对话框过程函数的类型转换为 DLGPROC 类型即可。
下面是一个示例代码:
```c++
INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_INITDIALOG:
// TODO: 初始化对话框控件
return (INT_PTR)TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
// TODO: 处理“确定”按钮的事件
EndDialog(hwndDlg, IDOK);
return (INT_PTR)TRUE;
case IDCANCEL:
// TODO: 处理“取消”按钮的事件
EndDialog(hwndDlg, IDCANCEL);
return (INT_PTR)TRUE;
}
break;
}
return (INT_PTR)FALSE;
}
// 创建对话框
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG), hwndParent, (DLGPROC)DialogProc);
```
阅读全文