Szkielet programu w trybie okienkowym WinAPI.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | #include <windows.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); HINSTANCE g_hinst; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { MSG msg ; WNDCLASS wc = {0}; wc.lpszClassName = TEXT( "Nazwa" ); //Nazwa naszej aplikacji wc.hInstance = hInstance ; wc.hbrBackground = GetSysColorBrush(COLOR_3DFACE); //Kolor tła - standardowy win wc.lpfnWndProc = WndProc ; //Nazwa procedury obsługi zdarzeń wc.hCursor = LoadCursor(0, IDC_ARROW); //Wygląd kursora aplikacji g_hinst = hInstance; RegisterClass(&wc); CreateWindow( wc.lpszClassName, TEXT("Nazwa"), //Tekst w nagłówku okna głównego WS_OVERLAPPEDWINDOW | WS_VISIBLE, //Flagi okna głównego 150, 150, 400, 280, 0, 0, hInstance, 0); //pozycja X, Y, szerokość i wysokość okna, a także wskaźnik na instancję aplikacji while( GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return (int) msg.wParam; } LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) //Procedura obsługi zdarzeń - serce API { static HWND Opt[12]; //Tablica kontrolek - ile kontrolek tyle elementów tu 12 switch(msg) { case WM_CREATE: //tworzenie wszystkich kontrolek //Lista tworzonych kontrolek, np: /* Opt[0]=CreateWindow(TEXT("button"), TEXT("Start"), WS_VISIBLE | WS_CHILD , 160, 120, 80, 25, hwnd, (HMENU) 1, NULL, NULL); Opt[1] = CreateWindow(..... */ break; case WM_COMMAND: //obsluga kliknięcia w kontrolkę switch(LOWORD(wParam)) //numer kontrolki { case 1: //kontrolka nr 1 parametr (HMENU)1 w CreateWindow Beep(400, 500); //np. Po kliknięciu na kontrolkę 1 - dźwięk break; case 2: //po kliknięciu na kontrolkę nr 2 - koniec programu PostQuitMessage(0); break; //case 3:........ obsługa wszystkich kontrolek } break; //koniec obsługi kliknięcia na kontrolkę case WM_DESTROY: //zdarzenie zamknięcia głównego okna PostQuitMessage(0); break; } return DefWindowProc(hwnd, msg, wParam, lParam); } |
Show Comments