откуда эти дублированные элементы GUI? - PullRequest
0 голосов
/ 01 мая 2011

Я недавно пытался закодировать GUI в DLL с использованием файлов .rc, но, к сожалению, столкнулся с

с несколькими проблемами.Вот скриншот графического интерфейса:

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 Ответ

2 голосов
/ 02 мая 2011
DialogBox (..., (DLGPROC)EventHandler); 

Что ж, вы заставили компилятор отключиться и сказать, что вы делаете что-то не так.Вы использовали "режим бога" с этим составом.Даже Бог использует break в выражении переключения.И обращает внимание на правила процедуры обратного вызова диалога, хорошо объясненные в оракуле MSDN .

. Существует множество библиотек классов, которые помогут вам избежать попадания в подобные ловушки.Qt, MFC, Winforms, WPF и так далее.Вы можете вызвать режим бога после того, как вы прочитали Petzold и все поняли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...