do koszyka |
do koszyka |
do koszyka |
do koszyka |
do koszyka |
do koszyka |
do koszyka |
do koszyka |
do koszyka |
WINAPI ostatnia aktualizacja: 23.12.2004 CREATEWINDOW - TWORZENIE OKNA APLIKACJI
Utworzenie i wyświetlenie okna programu (lub jak ktoś woli: formularza, formatki, itp. ).
#include "stdafx.h" #define def_NazwaOkna "okno" #define def_NazwaAplikacji "nazwa okna" HWND hwnd; // uchwyt okna (window handle) MSG msg; // obsługa kolejki komunikatów //domyślna funkcja obsługi okna LRESULT CALLBACK MainWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { //obsługa komunikatów okna switch(message) { //obslugujemy komunikat o zamknieciu okna case WM_DESTROY: PostQuitMessage(WM_CLOSE); return 0; } // wywołujemy funkcję domyślnej obsługi okna return DefWindowProc(hwnd,message,wParam,lParam); } WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // struktura zawierająca informacje o tworzonym oknie WNDCLASS wndclass; // reaguj na zmiany poziomej lub pionowej wielkości (przy odswieżaniu) wndclass.style = CS_HREDRAW | CS_VREDRAW; // funkcja obsługi komunikatów od Windows wndclass.lpfnWndProc = MainWndProc; // dodatkowa pamięć, którą możemy przydzielić dla naszego programu wndclass.cbClsExtra = 0L; wndclass.cbWndExtra = 0L; // uchwyt uruchomionej realizacji programu wndclass.hInstance = hInstance; //załadowanie ikonki programu, na razie domyślna wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION); // ikona myszki, domyślna wndclass.hCursor = LoadCursor(NULL,IDC_ARROW); // pędzel (na razie tylko jednolity kolor) tła wndclass.hbrBackground = HBRUSH(COLOR_WINDOW); wndclass.lpszMenuName = NULL; // nazwa klasy okna wndclass.lpszClassName = def_NazwaOkna; //informujemy Windows że taka klasa okna będzie używana // 'rejestrujemy klasę okna' if (RegisterClass(&wndclass)) { // utworzenie okna hwnd = CreateWindow( //nazwa klasy obsługi okna def_NazwaOkna, // napis na listwie okna def_NazwaAplikacji, // styl okna, okresla podstawowe ikony okna // takie jak minimalizuj, zamknij, itp. ten jest typowy WS_POPUPWINDOW | WS_CAPTION, // początkowa pozycja okna x 0, // początkowa pozycja okna y 0, // początkowa wielkość okna x 200, // początkowa wielkość okna y 200, // uchwyt okna nadrzednego, nasze okno jest główne, // więc nie ma okna nadrzędnego NULL, // uchwyt menu okna - nie ma menu NULL, // uchwyt realizacji programu hInstance, // parametry tworzenia okna NULL ); // wyswietlenie okna ShowWindow(hwnd,SW_SHOW); // wymuszamy jego pierwsze odrysowanie UpdateWindow(hwnd); //czyszczenie bufora obsługi komunikatów ZeroMemory( &msg, sizeof(msg) ); //główna pętla obsługi kolejki komunikatów okna while ( msg.message != WM_QUIT ) { if ( PeekMessage(&msg,NULL,0U,0U,PM_REMOVE ) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); } } //wyrejestrowanie klasy okna UnregisterClass(def_NazwaOkna,hInstance); //jeśli okno było utworzone należy je zwolnić if (hwnd != NULL) { DestroyWindow(hwnd); hwnd = NULL; } } else { MessageBox(NULL,"Nie mozna utworzyc okna","Komunikat",MB_OK); } return 0; } |
|