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

时间:2011-05-01 19:38:46

标签: c winapi

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

一些问题。以下是GUI的屏幕截图:

enter image description here

正如您所看到的,文本“找到主窗口?否”已被复制(我没有这样做),

盒子也被复制了(我也没有这样做。)

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

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

1 个答案:

答案 0 :(得分:2)

DialogBox (..., (DLGPROC)EventHandler); 

好吧,你让编译器关闭并告诉你你做错了什么。你用那个演员调用了“上帝模式”。甚至上帝在switch语句中使用 break 。并注意对话框回调程序的规则,在oracle of MSDN中有详细解释。

周围有很多类库可以帮助您避免陷入这类陷阱。 Qt,MFC,Winforms,WPF等。阅读Petzold并了解一切后,您可以调用神模式。