Kamil9132 Temat założony przez niniejszego użytkownika |
[Winapi] Pojawienie się bitmapy jeżeli dany warunek zostanie spełniony » 2011-10-12 00:11:49 Witam
Mam taki kod:
#include <string> #include <windows.h>
#define IDT_TIMER1 1
LPSTR NazwaKlasy = "Klasa Okienka"; MSG Komunikat; HWND g_hmenu; HWND g_hstart; WORD KulkaX = 100, KulkaY = 100; SHORT SpeedX = 2, SpeedY = 2; HWND g_hwnd;
HBITMAP bitmapa; BITMAP info_bitmapy;
bool g_hgracc = false;
int gra( int gramenu ) { if( gramenu == 1 ) { g_hgracc = true; bool z0 = true; bool z2 = false; bool z3 = false; bool z4 = false; bool z5 = false; while( z0 == true ) { z0 = false; } } return g_hgracc; }
void RysujKulke() { }
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { bitmapa =( HBITMAP ) LoadImage( 0, "bitmapa.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE ); if( bitmapa == 0 ) { MessageBox( 0, "Nie można otworzyć pliku bitmap.bmp z folderu z aplikacją", "Brak pliku", MB_ICONERROR ); return 0; } GetObject( bitmapa, sizeof( BITMAP ), & info_bitmapy ); WNDCLASSEX wc; wc.cbSize = sizeof( WNDCLASSEX ); wc.style = 0; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon( NULL, IDI_APPLICATION ); wc.hCursor = LoadCursor( NULL, IDC_ARROW ); wc.hbrBackground =( HBRUSH )( COLOR_WINDOW + 1 ); wc.lpszMenuName = NULL; wc.lpszClassName = NazwaKlasy; wc.hIconSm = LoadIcon( NULL, IDI_APPLICATION ); if( !RegisterClassEx( & wc ) ) { MessageBox( NULL, "Wysoka Komisja odmawia rejestracji tego okna!", "Niestety...", MB_ICONEXCLAMATION | MB_OK ); return 1; } HWND hwnd; hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, NazwaKlasy, "Oto okienko", WS_OVERLAPPED | WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU, CW_USEDEFAULT, CW_USEDEFAULT, 600, 800, NULL, NULL, hInstance, NULL ); if( hwnd == NULL ) { MessageBox( NULL, "Okno odmówiło przyjścia na świat!", "Ale kicha...", MB_ICONEXCLAMATION ); return 1; } ShowWindow( hwnd, nCmdShow ); UpdateWindow( hwnd ); SetTimer( hwnd, IDT_TIMER1, 10000, ( TIMERPROC ) NULL ); g_hstart = CreateWindowEx( 0, "BUTTON", "Rozpocznij gre", WS_CHILD | WS_VISIBLE, 200, 50, 150, 30, hwnd, NULL, hInstance, NULL ); while( GetMessage( & Komunikat, NULL, 0, 0 ) ) { TranslateMessage( & Komunikat ); DispatchMessage( & Komunikat ); } return Komunikat.wParam; DeleteObject( bitmapa ); return Komunikat.wParam; }
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { HDC hdc, hdcBitmapy; PAINTSTRUCT ps; switch( msg ) { case WM_CLOSE: DestroyWindow( hwnd ); break; case WM_PAINT: if( g_hgracc == false ) { hdc = BeginPaint( hwnd, & ps ); hdcBitmapy = CreateCompatibleDC( hdc ); bitmapa =( HBITMAP ) SelectObject( hdcBitmapy, bitmapa ); BitBlt( hdc, 100, 200, info_bitmapy.bmWidth, info_bitmapy.bmHeight, hdcBitmapy, 0, 0, SRCCOPY ); bitmapa =( HBITMAP ) SelectObject( hdcBitmapy, bitmapa ); DeleteDC( hdcBitmapy ); HDC hdcOkno; hdcOkno = GetDC( hwnd ); POINT stary_punkt; MoveToEx( hdcOkno, 100, 100, & stary_punkt ); if( g_hgracc == true ) { LineTo( hdcOkno, 210, 100 ); } ReleaseDC( hwnd, hdcOkno ); } EndPaint( hwnd, & ps ); break; case WM_TIMER: if( wParam == IDT_TIMER1 ) { return 0; } break; case WM_COMMAND: if(( HWND ) lParam == g_hmenu ) { MessageBox( hwnd, "Nacisnąłeś przycisk!", "Ha!", MB_ICONINFORMATION ); } if(( HWND ) lParam == g_hstart ) { MessageBox( hwnd, "Nacisnąłeś start!", "Ha!", MB_ICONINFORMATION ); gra( 1 ); if( g_hgracc == true ) { DestroyWindow( g_hstart ); g_hmenu = CreateWindowEx( 0, "BUTTON", "Menu", WS_CHILD | WS_VISIBLE, 10, 10, 150, 30, hwnd, NULL,( HINSTANCE ) GetWindowLong( hwnd, GWL_HINSTANCE ), NULL ); CreateWindowEx( 0, "BUTTON", "Nowy guzik", WS_CHILD | WS_VISIBLE, 300, 50, 150, 30, hwnd, NULL,( HINSTANCE ) GetWindowLong( hwnd, GWL_HINSTANCE ), NULL ); } } break; case WM_KEYDOWN: { switch(( int ) wParam ) { case VK_ESCAPE: int msgboxID = MessageBox( hwnd, "Czy na pewno chcesz zamknac okno?", "Wyjście", MB_YESNOCANCEL ); switch( msgboxID ) { case IDYES: DestroyWindow( hwnd ); } break; } } break; case WM_DESTROY: PostQuitMessage( 0 ); break; default: return DefWindowProc( hwnd, msg, wParam, lParam ); } return 0; }
Jak zrobić żeby bitmapa pojawiała się jeżeli if (g_hgracc == true) ?
Gdzie trzeba dodać tego ifa?
Próbowałem w różnych miejscach, ale nie działa.
Bardzo proszę o szybką pomoc. |