SeaMonster131 Temat założony przez niniejszego użytkownika |
[WinAPI, C++] Wyświetlanie bitmap w zależności od wciśniętego przycisku » 2010-06-22 20:24:59 Mam puste okienko oraz 2 przyciski. Gdy nacisnę 1. przycisk to pojawia się bitmapa "jeden.bmp" o współrzędnych 100 i 100 oraz o wymiarach 10 na 10. Gdy nacisnę drugi przycisk to zamiast bitmapy "jeden.bmp" pojawia się o takich samych wymiarach i współrzędnych bitmapa "dwa.bmp". I teraz moje pytanie: jak to zrobić? :D Używając goto jakoś bym to wykombinował, ale właśnie nie chce używać goto. A innego pomysłu nie mam... pomoże mi ktoś? :)
#edit: 100 post! :D:D |
|
Elaine |
» 2010-06-22 20:44:07 Pseudokod: PierwszyPrzyciskOnClick() { RysujBitmape( "jeden.bmp" ); } DrugiPrzyciskOnClick() { RysujBitmape( "dwa.bmp" ); } Gdzie ty tu chciałeś wsadzić goto? |
|
SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2010-06-22 21:21:31 Bo mam tak: główna funkcja INT WINAPI WinMain(...); w której mam wyświetlanie okna oraz mam LRESULT CALLBACK WndProc(...); w której jest "obsługa" okna. Może dam kod:D LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wPar, LPARAM lPar ) { HDC hdc, hdcBitmapy; switch( msg ) { case WM_CREATE: hButton = CreateWindowEx( 0, WC_BUTTON, "Cos", WS_CHILD + WS_VISIBLE, 100, 290, 80, 40, hwnd,( HMENU ) 1, * hInst, 0 ); hButton = CreateWindowEx( 0, WC_BUTTON, "Cos2", WS_CHILD + WS_VISIBLE, 200, 390, 80, 40, hwnd,( HMENU ) 2, * hInst, 0 ); break; case WM_COMMAND: if( wPar == 1 ) { } if( wPar == 2 ) { } break; case WM_DESTROY: DestroyWindow( hButton ); DestroyWindow( hWnd ); PostQuitMessage( 0 ); break; case WM_PAINT: kon = BeginPaint( hwnd, & ps ); hdcBitmapy = CreateCompatibleDC( kon ); bitmapa =( HBITMAP ) SelectObject( hdcBitmapy, bitmapa ); BitBlt( kon, 40, 140, 130, 130, hdcBitmapy, 0, 0, SRCCOPY ); bitmapa =( HBITMAP ) SelectObject( hdcBitmapy, bitmapa ); DeleteDC( hdcBitmapy ); hdcBitmapy = CreateCompatibleDC( kon ); bitmapa2 =( HBITMAP ) SelectObject( hdcBitmapy, bitmapa2 ); BitBlt( kon, 330, 140, 130, 130, hdcBitmapy, 0, 0, SRCCOPY ); bitmapa2 =( HBITMAP ) SelectObject( hdcBitmapy, bitmapa2 ); DeleteDC( hdcBitmapy ); EndPaint( hwnd, & ps ); break; default: return DefWindowProc( hwnd, msg, wPar, lPar ); break; } return 0; } A więc wydaje mi się że przykład @Iname tutaj nie za bardzo pasuje :D Chyba że w WM_COMMAND można dać kod za rysowanie/wyświetlanie bitmap itd... A musze to sprawdzić :D |
|
malan |
» 2010-06-22 22:08:02 case WM_COMMAND: { switch( wParam ) { case 1: DisplayBitmap( hwnd, "myBitmap.bmp" ); break; case 2: DisplayBitmap( hwnd, "myFoo.bmp" ); break; } } break;
void DisplayBitmap( HWND hWindow, const char * bmpName ) { CleanWindow( hWindow ); DrawBitmap( hWindow, LoadBitmap( bmpName ) ); return; };
Czytelne? :) |
|
SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2010-06-23 16:47:12 Czytelne, czytelne :D Jak będę miał wolny czas to przetestuje ;) Dzięki za pomoc |
|
« 1 » |