Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[WinAPI] Zamykanie określonego okienka

Ostatnio zmodyfikowano 2013-12-01 17:16
Autor Wiadomość
pawellek1995
Temat założony przez niniejszego użytkownika
[WinAPI] Zamykanie określonego okienka
» 2013-11-30 16:47:06
Witam,
Napisałem program, który powinien zamykać określone okienko, lecz gdy nacisnę "x" WM_CLOSE to zamyka mi wszystkie okna. Gdyby ktoś mógł pomóc byłbym wdzięczny.

C/C++
kontrolka[ 0 ] = CreateWindowEx( 0, "BUTTON", "X", WS_CHILD | WS_VISIBLE,
10, 10, 30, 20, okienka[ 0 ], NULL, * hInst, NULL );
^To kontrolka która miała zamykać okno.
To obsługa komunikatów:
C/C++
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
    switch( msg )
    {
    case WM_COMMAND:
        if(( HWND ) lParam == kontrolka[ 0 ] )
             DestroyWindow( okienka[ 0 ] );
       
        break;
    case WM_CREATE:
       
        break;
    case WM_CLOSE:
        DestroyWindow( hwnd );
        break;
       
    case WM_DESTROY:
        PostQuitMessage( 0 );
        break;
       
        default:
        return DefWindowProc( hwnd, msg, wParam, lParam );
    }
   
    return 0;
}

To tworzenie okiena drugiego(głównego nie chcem zamykać tylko drugie). Właśnie próbowałem stworzyć drugą pętle komunikatów ale dalej nie działała.

C/C++
okienka[ 0 ] = CreateWindowEx( WS_EX_CLIENTEDGE, NazwaKlasy, "Opcje", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 400, 200, NULL, NULL, * hInst, NULL );

I mam jeszcze jedno pytanie. Jeśli tworzy się pare okienek to czy trzeba dla każdego tworzyć nową funkcję WNDCLASSEX i obsługę komunikatów ?
P-97909
pekfos
» 2013-11-30 16:51:01
Zamykają się wszystkie okna, bo w WM_DESTROY nie sprawdzasz, które jest niszczone i kończysz pracę programu.

Jeśli tworzy się pare okienek to czy trzeba dla każdego tworzyć nową funkcję WNDCLASSEX i obsługę komunikatów ?
Nie.
P-97910
pawellek1995
Temat założony przez niniejszego użytkownika
» 2013-11-30 16:52:38
A jak to sprawdzić ? Lparam ani Wparam nie jest wykorzystywany ;/ przy WM_DESTROY
P-97911
pekfos
» 2013-11-30 16:53:51
hwnd.
P-97912
pawellek1995
Temat założony przez niniejszego użytkownika
» 2013-11-30 17:08:00
Ale PostQuitMessage przyjmuje tylko int :(
P-97913
pekfos
..
» 2013-11-30 17:10:06
Wiesz w ogóle, co robi PostQuitMessage()?
P-97914
pawellek1995
Temat założony przez niniejszego użytkownika
» 2013-11-30 17:13:45
Dokładnie nie wiem, sam się próbuje uczyć winapi w szkole tego nie uczą. Wiem że przekazuje jakiś parametr do WM_Quit ? Mógłbyś podać jakiś przykład?
Chyba łatwiej będzie jak stworze nową WNDCLASSEX dla każdego nowego okienka i obsługę, ale to bedzie masakryczna ilość kodu ;/
P-97915
pekfos
» 2013-11-30 17:19:16
P-97916
« 1 » 2 3 4
  Strona 1 z 4 Następna strona