Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 这些重复的GUI元素来自哪里?_C_Winapi - Fatal编程技术网

C 这些重复的GUI元素来自哪里?

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);

我最近尝试使用.rc文件在DLL中编写GUI,但不幸的是遇到了错误

有几个问题。以下是GUI的屏幕截图:

如您所见,文本“Main Window Found?No”已被复制(我没有这样做)

此外,该框也被复制(我也没有这样做)

这是我用来生成对话框的代码:

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);