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

WinAPI - rysowanie w pętli zawiesza program

Ostatnio zmodyfikowano 2015-04-14 18:19
Autor Wiadomość
bingo009
Temat założony przez niniejszego użytkownika
WinAPI - rysowanie w pętli zawiesza program
» 2015-04-13 16:35:59
Witam was serdecznie, otóż mam zrobić wizualizację ruchu w WinAPI. Mam jednak problem, tworzę sobię taką pętlę główną:
C/C++
void ClearScreen( HWND okno )
{
    //Czyszczenie okna
    HDC screenDC = GetDC( okno );
    HBRUSH brush = CreateSolidBrush( RGB( 255, 255, 255 ) );
    SelectObject( screenDC, brush );
    Rectangle( screenDC, 180, 0, GetSystemMetrics( SM_CXSCREEN ), GetSystemMetrics( SM_CYSCREEN ) );
    DeleteObject( brush );
    ReleaseDC( okno, screenDC );
    //Czyszczenie okna - koniec
}

void DrawObject( HDC hdcOkno, int x, int y )
{
    SetPixel( hdcOkno, x - 1, y - 1, 0xFF0000 );
    SetPixel( hdcOkno, x, y - 1, 0xFF0000 );
    SetPixel( hdcOkno, x + 1, y - 1, 0xFF0000 );
   
    SetPixel( hdcOkno, x - 1, y, 0xFF0000 );
    SetPixel( hdcOkno, x, y, 0xFF0000 );
    SetPixel( hdcOkno, x + 1, y, 0xFF0000 );
   
    SetPixel( hdcOkno, x - 1, y + 1, 0xFF0000 );
    SetPixel( hdcOkno, x, y + 1, 0xFF0000 );
    SetPixel( hdcOkno, x + 1, y + 1, 0xFF0000 );
}

obx = 200;
oby = 10;

while( GetAsyncKeyState( VK_ESCAPE ) == 0 )
{
    ClearScreen( hwnd );
    DrawObject( hdcOkno, obx, oby );
}

Funkcja ClearScreen czyści ekran rysując na nim biały kwadrat(ekran nie jest czyszczony od punktu (0,0), bo mam po lewo panel kontrolny i nie chcę, aby był on czyszczony), a funkcja DrawObject rysuje kwadrat 3x3 pikseli, bo pojedyńczy piksel jest słabo widoczny. Problem polega na tym, że absolutnie nic się nie rysuje - program się wiesza, ale reaguje na klawisz Escape. Wiem, że WinApi nie służy do rysowania, ale jestem zmuszony zrobić program w WinAPI i nie mogę nic na to poradzić, chociaż wolałbym w np. SFML, bo tam napisałbym taki program w godzinę max, a WinAPI się męczę. Źle robię pętlę główną, czy źle się zabieram za rysowanie(nie pisałem nigdy w WinAPI nic takiego)? W WinAPI programuje się proste gry, więc ufam, że da radę jakoś to załatwić.
P-130836
pekfos
» 2015-04-13 17:16:01
Musisz obsługiwać komunikaty, więc taka pętla nie ma racji bytu.
P-130837
bingo009
Temat założony przez niniejszego użytkownika
» 2015-04-14 18:19:47
Byłbym wdzięczny za jakiś trop, jak to ma wygląda, obecnie siedzi to w zdarzeniu, po wywołaniu przycisku, nie wiem jak to powinno wyglądać dobrze.

Edit: Przez swoje próby pogubiłem się już w kodzie, tak więc pobrałem sobie prosty przykład rysowania grafiki w WinAPI i użyłem tego jako szablonu - rysowanie jest już szybkie i się nie wiesza aplikacja, tak więc problem rozwiązany.
P-130884
« 1 »
  Strona 1 z 1