2011-05-01 53 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並理解一切後,你可以調用神模式。