2011-05-01 54 views
0

我最近试图在使用.rc文件的DLL中编写一个GUI,但不幸遇到了几个问题。这里是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; 
} 
+4

欢迎来到StackOverflow。请注意,“请帮助”,尤其是当与感叹号后缀,是一个问题的标题很不合适 - 请编辑你的问题,用一个有意义的标题。 – ThiefMaster 2011-05-01 19:43:11

+0

请添加在这里你打电话到你“的MainWin”功能的代码。你是否有机会从DllMain调用这个函数? – 2011-05-01 19:47:33

+0

谁在叫'的MainWin()',更重要的是,多少次叫? – 2011-05-01 19:49:15

回答

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

好了,你得到了编译器闭嘴,并告诉你,你正在做的事情是错误的。你在那个演员中引用了“神模”。尽管如此,即使上帝在switch语句中使用break。并注意对话回调程序的规则,在oracle of MSDN中有详细解释。

有很多围绕着帮助你避免落入这些陷阱样的类库。 Qt,MFC,Winforms,WPF等。读完Petzold并理解一切后,你可以调用神模式。