CreateDialog()

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by kap00stik, 30 Nov 2012.

  1. kap00stik

    kap00stik New Member

    Joined:
    26 Jun 2010
    Messages:
    28
    Likes Received:
    0
    Reputations:
    0
    Создаю из основного окна с помощью CreateDialog() второе не модальное окно. Окно вижу, больше ничего делать не могу, не сдвинуть его, не кнопку нажать. В чем дело?
     
  2. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Как бэ код неплохо было бы увидеть.
    Ну а если без кода - то прочитай тут
     
  3. MTV

    MTV New Member

    Joined:
    16 Feb 2011
    Messages:
    180
    Likes Received:
    2
    Reputations:
    0
    неплохо было бы еще обработчик для окна написать...
     
  4. kap00stik

    kap00stik New Member

    Joined:
    26 Jun 2010
    Messages:
    28
    Likes Received:
    0
    Reputations:
    0
    тут и читал, собственно этот кусок и юзаю, только диалог естественно сам слепил. Окно выводится, но ни на что не реагирует. :confused:

    PHP:

    #include "test.h"

    //глобальные переменные
    HINSTANCE    hInst;                            
    HWND hConfDlg NULL;

    //точка входа
    int WINAPI WinMain(HINSTANCE hInstanceHINSTANCE hPrevInstanceLPSTR lpCmdLineint nCmdShow)
    {
        
    MSG msg;
        
    WNDCLASSEX wcex;

        
    wcex.cbSize            sizeof(WNDCLASSEX);
        
    wcex.style          CS_HREDRAW CS_VREDRAW;
        
    wcex.lpfnWndProc    WndProc;
        
    wcex.cbClsExtra     0;
        
    wcex.cbWndExtra     0;
        
    wcex.hInstance      hInstance;
        
    wcex.hIcon          LoadIcon(hInstanceMAKEINTRESOURCE(IDI_APPLICATION));
        
    wcex.hCursor        LoadCursor(NULLIDC_ARROW);
        
    wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
        
    wcex.lpszMenuName   NULL;
        
    wcex.lpszClassName  WND_CLASS;
        
    wcex.hIconSm        NULL;

        if(!
    RegisterClassEx(&wcex)) return 1;

        
    hInst hInstance

        
    HWND hWnd CreateWindow(WND_CLASS
                                
    WND_CLASS
                                 
    WS_OVERLAPPEDWINDOW,
                                 
                                 
    CW_USEDEFAULT
                                 
    CW_USEDEFAULT
                                 
    500100
                                 
    NULL
                                 
    NULL
                                 
    hInstance
                                 
    NULL);
        
        if(!
    hWnd
            return 
    1;
        
        
    ShowWindow(hWndSW_SHOW);
        
    UpdateWindow(hWnd);


        while(
    GetMessage(&msgNULL00) != 0
        { 
            if(!
    IsWindow(hConfDlg) || !IsDialogMessage(hConfDlg, &msg)) 
            { 
                
    TranslateMessage(&msg); 
                
    DispatchMessage(&msg); 
            } 
        } 

        return (int)
    msg.wParam;
    }


    //процедура основного окна
    LRESULT CALLBACK WndProc(HWND hWndUINT messageWPARAM wParamLPARAM lParam)
    {
        switch (
    message)
        {

        case 
    WM_CREATE:
            
    //Здесь ставлю отлов на Alt + Shift + P и хочу показать окно про отлове
            
    RegisterHotKey(hWndHOTKEY_IDMOD_ALT MOD_SHIFT'P');
        break;

        case 
    WM_HOTKEY:
            if(
    wParam == HOTKEY_ID)
            {    
    //Наш ход
                
                //выводим окно
                
    if(!IsWindow(hConfDlg)) 
                {
                    
    hConfDlg CreateDialog(hInstMAKEINTRESOURCE(DLG_CONF), hWnd, (DLGPROC)ConfigProc);
                    
    ShowWindow(hConfDlgSW_SHOW);
                }
            }
        break;

        case 
    WM_DESTROY:
            
    PostQuitMessage(0);
        break;

        default:
            return 
    DefWindowProc(hWndmessagewParamlParam);
        }
        return 
    0;
    }


    //Процедура диалога
    BOOL CALLBACK ConfigProc(HWND hwndDlgUINT messageWPARAM wParamLPARAM lParam

        
     
        switch (
    message
        { 
            case 
    WM_INITDIALOG
               
                return 
    TRUE
     
            case 
    WM_COMMAND
                switch (
    LOWORD(wParam)) 
                { 
                    case 
    IDOK
                      
     
                        return 
    TRUE
     
                    case 
    IDCANCEL
                        
    DestroyWindow(hwndDlg); 
                        
    hConfDlg NULL
                        return 
    TRUE
                } 
        } 
        return 
    FALSE



    Что не так?
     
    #4 kap00stik, 30 Nov 2012
    Last edited: 30 Nov 2012
  5. kap00stik

    kap00stik New Member

    Joined:
    26 Jun 2010
    Messages:
    28
    Likes Received:
    0
    Reputations:
    0
    все отбой, заработало все.