Hello World in Win32 API
//
// HELLO.C
//
#include <windows.h>
#define MESG1 "Hello World! About 70 lines of code for Hello World!"
#define MESG2 "Written using the Windows API."
LRESULT WINAPI MainWndProc
( HWND, UINT, WPARAM, LPARAM );
int WINAPI WinMain
( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpszCmdLine,
int nCmdShow
)
{ WNDCLASS wc;
MSG msg;
HWND hWnd;
wc.lpszClassName = "HelloClass";
wc.lpfnWndProc = MainWndProc;
wc.style = CS_VREDRAW | CS_HREDRAW;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon( NULL, IDI_APPLICATION );
wc.hCursor = LoadCursor( NULL, IDC_ARROW );
wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
RegisterClass( &wc );
hWnd = CreateWindow
( "HelloClass",
"Hello World",
WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_VSCROLL,
0,
0,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);
ShowWindow( hWnd, nCmdShow );
while( GetMessage( &msg, NULL, 0, 0 ) )
{ TranslateMessage( &msg );
DispatchMessage( &msg );
}
return msg.wParam;
}
LRESULT CALLBACK MainWndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{ PAINTSTRUCT ps;
HDC hDC;
switch( msg )
{ case WM_PAINT:
hDC = BeginPaint( hWnd, &ps );
TextOut( hDC, 10, 10, MESG1, strlen(MESG1) );
TextOut( hDC, 10, 25, MESG2, strlen(MESG2) );
EndPaint( hWnd, &ps );
break;
case WM_DESTROY:
PostQuitMessage( 0 );
break;
default:
return( DefWindowProc( hWnd, msg, wParam, lParam ));
}
return 0;
}