René Nyffenegger's collection of things on the web | |
René Nyffenegger on Oracle - Most wanted - Feedback
- Follow @renenyffenegger
|
A simple windows programm in c | ||
The following programm is a minimal windows program. It opens a window and writes a text into the window.
If you compile it with MinGW, be sure to add the -mwindows
flag in order to prevent the ... undefined reference to 'TextOutA@20' and ... undefined reference to 'GetStockObject@4
linker error.
#include <windows.h> LRESULT CALLBACK WndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) { switch( msg ) { case WM_PAINT: { PAINTSTRUCT ps; HDC hDC = BeginPaint( hWnd, &ps ); TextOut(hDC, 10, 10, "ADP GmbH", 8 ); EndPaint( hWnd, &ps ); } break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc( hWnd, msg, wParam, lParam); } return 0; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASSEX wce; wce.cbSize = sizeof(wce); wce.style = CS_VREDRAW | CS_HREDRAW; wce.lpfnWndProc = (WNDPROC) WndProc; wce.cbClsExtra = 0; wce.cbWndExtra = 0; wce.hInstance = hInstance; wce.hIcon = LoadIcon((HINSTANCE) NULL, IDI_APPLICATION); wce.hCursor = LoadCursor((HINSTANCE) NULL, IDC_ARROW); wce.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); wce.lpszMenuName = 0; wce.lpszClassName = "ADPWinClass", wce.hIconSm = 0; if (!RegisterClassEx(&wce)) return 0; HWND hWnd = CreateWindowEx( 0, // Ex Styles "ADPWinClass", "ADP GmbH", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, // x CW_USEDEFAULT, // y CW_USEDEFAULT, // Height CW_USEDEFAULT, // Width NULL, // Parent Window NULL, // Menu, or windows id if child hInstance, // NULL // Pointer to window specific data ); ShowWindow( hWnd, nCmdShow ); MSG msg; int r; while ((r = GetMessage(&msg, NULL, 0, 0 )) != 0) { if (r == -1) { ; // Error! } else { TranslateMessage(&msg); DispatchMessage(&msg); } } // The application's return value return msg.wParam; };
A sligthly different version of this program is here, it uses a class that dynamically creates an icon.
|