Zwraca wartość różną od zera, jeżeli okno o podanym uchwycie istnieje. W przeciwnym wypadku funkcja zwraca wartość
nie powinna być używana przez wątek, który nie tworzył okna, ponieważ okno mogło zostać zniszczone zaraz po wywołaniu tej funkcji.
Uchwyty okna z chwilą zniszczenia zasobów na które wskazywały są zwracane do puli ogólnej, a więc może się zdarzyć sytuacja w której uchwyt zacznie wskazywać na inne okno.
#include <windows.h>
LRESULT CALLBACK WindowProcedure( HWND, UINT, WPARAM, LPARAM );
char szClassName[] = "WindowsApp";
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstnace, LPSTR lpCmdLine, int nCmdShow )
{
HWND hwnd;
MSG messages;
WNDCLASSEX wincl;
wincl.hInstance = hInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof( WNDCLASSEX );
wincl.hIcon = LoadIcon( NULL, IDI_APPLICATION );
wincl.hIconSm = LoadIcon( NULL, IDI_APPLICATION );
wincl.hCursor = LoadCursor( NULL, IDC_ARROW );
wincl.lpszMenuName = NULL;
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hbrBackground =( HBRUSH ) COLOR_BACKGROUND;
if( !RegisterClassEx( & wincl ) )
return 0;
hwnd = CreateWindowEx( 0, szClassName, "Windows App", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 544, 375, HWND_DESKTOP, NULL, hInstance, NULL );
ShowWindow( hwnd, SW_NORMAL );
if( IsWindow( hwnd ) != 0 ) MessageBox( HWND_DESKTOP, "Okno zostało wykryte.", "Komunikat", MB_OK );
if( IsWindow( hwnd ) == 0 ) MessageBox( HWND_DESKTOP, "Okno nie zostało wykryte.", "Komunikat", MB_OK );
while( GetMessage( & messages, NULL, 0, 0 ) )
{
TranslateMessage( & messages );
DispatchMessage( & messages );
}
return messages.wParam;
}
LRESULT CALLBACK WindowProcedure( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )
{
switch( message )
{
case WM_DESTROY:
PostQuitMessage( 0 );
break;
default:
return DefWindowProc( hwnd, message, wParam, lParam );
}
return 0;
}