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;
}
|
|








