7
Jan
2009
Jan
2009
Simple Win32 Window
I seem to always need this skeleton code to build a window but I can never seem to memorize the whole thing. I figured I would post it here to make it easier for me to find. The #programa comments are not cross platform and only work on Microsoft based compilers, so watch out.
/** * SimpleWindow v1.0 * @file * * 09-24-2008: JPH - Created. * * @author Jacob Hammack */ #include <windows.h> /** * Forces the compiler to link these libraries * */ #pragma comment(lib, "user32.lib") #pragma comment(lib, "gdi32.lib") #pragma comment(lib, "kernel32.lib") /** * WindowsMessageLoop processes * * @author Jacob Hammack */ LRESULT CALLBACK WindowsMessageLoop(HWND WindowHandle, UINT Message, WPARAM WindowParameters, LPARAM MoreWindowsParameters) { switch(Message) { case WM_CREATE: return 0; case WM_PAINT: return 0; case WM_SIZE: return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(WindowHandle, Message, WindowParameters, MoreWindowsParameters); } /** * WinMain is the main() equivilent for a windows program, execution starts here. * * @author Jacob Hammack */ int WINAPI WinMain (HINSTANCE CurrentInstance, HINSTANCE PreviousInstance, PSTR CommandLine, int CommandShow) { static TCHAR ApplicationName[] = TEXT("SimpleWindow"); HWND WindowHandle; MSG Message; WNDCLASS WindowsClass; WindowsClass.style = CS_HREDRAW | CS_VREDRAW; WindowsClass.lpfnWndProc = WindowsMessageLoop; WindowsClass.cbClsExtra = 0; WindowsClass.cbWndExtra = 0; WindowsClass.hInstance = CurrentInstance; WindowsClass.hIcon = LoadIcon(NULL, IDI_APPLICATION); WindowsClass.hCursor = LoadCursor(NULL, IDC_ARROW); WindowsClass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); WindowsClass.lpszMenuName = NULL; WindowsClass.lpszClassName = ApplicationName; if(!RegisterClass(&WindowsClass)) { MessageBox(NULL, TEXT("Unable to create a window."), ApplicationName, MB_ICONERROR); return 0; } WindowHandle = CreateWindow(ApplicationName, /* Window Class Name*/ TEXT("Simple Window"), /* Window Caption */ WS_OVERLAPPEDWINDOW, /* Window Style*/ CW_USEDEFAULT, /* Initial X position*/ CW_USEDEFAULT, /* Initial Y position */ 300, /* Initial Width of the window*/ 100, /* Initial Height of the window */ NULL, /* Parent Window Handle */ NULL, /* Window Menu Handle */ CurrentInstance, /* Instance of the Program Handle*/ NULL); /* Window Creation Parameters */ ShowWindow(WindowHandle, CommandShow); UpdateWindow(WindowHandle); while(GetMessage(&Message, NULL, 0, 0)) { TranslateMessage(&Message); DispatchMessage(&Message); } return Message.wParam; }
MakefileCC=cl CFLAGS= /nologo /MT /O2 /TC LINKS=/link /OUT:simplewindow.exe /SUBSYSTEM:WINDOWS all: simplewindow simplewindow: simplewindow.c $(CC) $(CFLAGS) simplewindow.c $(LINKS) clean: del *.exe; del *.obj
- simplewindow.c
- Makefile
- simplewindow.exe - MD5(8f827d944b43e033904f72d1b900d2c9)