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

WinApi - zamknięcie okna

Ostatnio zmodyfikowano 2010-05-09 15:52
Autor Wiadomość
ison
Temat założony przez niniejszego użytkownika
WinApi - zamknięcie okna
» 2010-05-09 14:34:15
witam,
mógłbym mi ktoś pomóc i powiedzieć dlaczego to okno po zamknięciu zostaje w procesach? (muszę je zabijać przez menedżera zadań)
C/C++
#include<windows.h>

int WINAPI WinMain(
HINSTANCE program,
HINSTANCE oj,
LPSTR lpsCmdLine,
int nMode )
{
    HWND okno;
    MSG wiadomosc;
    WNDCLASS klasa;
   
    klasa.hInstance = program;
    klasa.lpszClassName = "ison";
    klasa.lpfnWndProc = DefWindowProc;
    klasa.lpszMenuName = NULL;
    klasa.style = 0;
    klasa.hIcon = LoadIcon( program, "IKONA" );
    klasa.hCursor = LoadCursor( program, "KURSOR" );
    klasa.hbrBackground =( HBRUSH ) GetStockObject( BLACK_BRUSH );
    klasa.cbClsExtra = 0;
    klasa.cbWndExtra = 0;
    if( !RegisterClass( & klasa ) ) return 0;
   
    okno = CreateWindow(
    "ison", "blebleble", WS_OVERLAPPEDWINDOW, 500, 500, 500, 500, NULL, NULL, program, NULL );
    ShowWindow( okno, SW_SHOW );
   
    HBITMAP bitmapa = LoadBitmap( program, "OBRAZEK" );
    HDC kontekst = GetDC( okno );
    RECT prost = { 30, 100, 200, 300 };
    FillRect( kontekst, & prost, CreateSolidBrush( 0x44FFDD ) );
    HDC pomoc = CreateCompatibleDC( kontekst );
    SelectObject( pomoc, bitmapa );
    BitBlt( kontekst, 30, 50, 100, 100, pomoc, 0, 0, SRCCOPY );
    TextOut( kontekst, 10, 10, "f", 1 );
    DeleteDC( pomoc );
    ReleaseDC( okno, kontekst );
    DeleteObject( bitmapa );
   
    while( GetMessage( & wiadomosc, NULL, 0, 0 ) )
    {
        DispatchMessage( & wiadomosc );
        TranslateMessage( & wiadomosc );
    }
    PostQuitMessage( 0 );
}
P-16735
Elaine
» 2010-05-09 15:15:13
WM_QUIT nigdy nie zostaje wysłane, więc pętla komunikatów się nie kończy.
P-16736
ison
Temat założony przez niniejszego użytkownika
» 2010-05-09 15:17:37
nie rozumiem, dopiero zaczynam uczyć się winapi i niezbyt ogarniam :)
czyli co mam napisać na koniec żeby się zamknęło?

teraz po naciśnięciu krzyżyka okno znika a proces zostaje
P-16737
Elaine
» 2010-05-09 15:52:46
Musisz napisać własną procedurę obsługi komuniaktów, która wyśle WM_QUIT w momencie zamknięcia okna.
P-16739
« 1 »
  Strona 1 z 1