我最近尝试使用.rc文件在DLL中编写GUI,但不幸的是遇到了
一些问题。以下是GUI的屏幕截图:
正如您所看到的,文本“找到主窗口?否”已被复制(我没有这样做),
盒子也被复制了(我也没有这样做。)
这是我用来生成对话框的代码:
DWORD WINAPI MainWin (HMODULE hMod)
{
DialogBox (hMod, MAKEINTRESOURCE (IDD_DIALOG1), NULL, (DLGPROC)EventHandler);
ExitThread (0);
return 0;
}
BOOL CALLBACK EventHandler (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_INITDIALOG:
ControlHwnd = hDlg;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDC_CHECKBOX1:
Test = !Test;
CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)&TestFunc,NULL,0,NULL);
Beep (500,500);
break;
}
break;
}
return 0;
}
答案 0 :(得分:2)
DialogBox (..., (DLGPROC)EventHandler);
好吧,你让编译器关闭并告诉你你做错了什么。你用那个演员调用了“上帝模式”。甚至上帝在switch语句中使用 break 。并注意对话框回调程序的规则,在oracle of MSDN中有详细解释。
周围有很多类库可以帮助您避免陷入这类陷阱。 Qt,MFC,Winforms,WPF等。阅读Petzold并了解一切后,您可以调用神模式。