C 这些重复的GUI元素来自哪里?
我最近尝试使用.rc文件在DLL中编写GUI,但不幸的是遇到了错误 有几个问题。以下是GUI的屏幕截图: 如您所见,文本“Main Window Found?No”已被复制(我没有这样做) 此外,该框也被复制(我也没有这样做) 这是我用来生成对话框的代码:C 这些重复的GUI元素来自哪里?,c,winapi,C,Winapi,我最近尝试使用.rc文件在DLL中编写GUI,但不幸的是遇到了错误 有几个问题。以下是GUI的屏幕截图: 如您所见,文本“Main Window Found?No”已被复制(我没有这样做) 此外,该框也被复制(我也没有这样做) 这是我用来生成对话框的代码: DWORD WINAPI MainWin (HMODULE hMod) { DialogBox (hMod, MAKEINTRESOURCE (IDD_DIALOG1), NULL, (DLGPROC)EventHandler);
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;
}
你让编译器闭嘴,告诉你你做错了什么。你用这个角色调用了“上帝模式”。即使上帝也在switch语句中使用break。并注意对话框回调过程的规则,在中有很好的解释
有很多类库可以帮助您避免落入此类陷阱。Qt、MFC、Winforms、WPF等。你可以在阅读了Petzold并理解了一切之后调用上帝模式 欢迎来到StackOverflow。请注意,“Please help”(请帮助),尤其是带有感叹号的后缀,在问题标题中是非常不合适的-请编辑您的问题并使用有意义的标题。请将您调用的代码添加到“MainWin”函数中。您是否有可能从DllMain调用此文件?谁调用了
MainWin()
,更重要的是,调用了多少次?如果您也能提供.rc
文件,那就太好了。
DialogBox (..., (DLGPROC)EventHandler);