Übersicht        

Ein Windows API Beispielprogramm

Bedingt durch das System und seine Benutzeroberfläche, haben Windows-Programme einen ganz bestimmten Aufbau. Wer seine Programme nur mit der Windows API entwickelt und auf Klassenbibliotheken wie die OWL verzichtet, hat schon einigen Verwaltungsmehraufwand zu erledigen. Genau dafür, nämlich zur Entlastung des Programmierers, wurden solche Klassenbibliotheken entworfen: Der Aufwand der immer wiederkehrenden Verwaltungsarbeiten wird durch sie wesentlich minimiert. Sehen wir uns nun einmal ein Windowsprogramm an, das nur unter Verwendung der Windows-API programmiert wurde:

 

#define STRICT /* striktere Typenprüfung */
 
#include <windows.h>
 
/* Prototyp der Fensterfunktion */
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
 
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpszCmdLine,int nCmdShow)
{

HWND hWindow;

MSG msg;

WNDCLASS wndClass;

 

if(!hPrevInstance) {

wndClass.lpszClassName = "BspWnd";

wndClass.hInstance = hInstance;

wndClass.lpfnWndProc = WndProc;

wndClass.hCursor = LoadCursor(hInstance, IDC_ARROW);

wndClass.hIcon = LoadIcon(hInstance, "BspIcon");

wndClass.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1);

wndClass.lpszMenuName = NULL;

wndClass.style = CS_HREDRAW|CS_VREDRAW;

wndClass.cbClsExtra = 0;

wndClass.cbWndExtra = 0;

RegisterClass(&wndClass);

}

hWindow = CreateWindow( "BspWnd", "Hallo, ich bin das Beispiel-Fenster", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

ShowWindow(hWindow, nCmdShow);

while(GetMessage(&msg, 0, 0, 0)) {

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return 0;

}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{

switch(msg) {

case WM_DESTROY:

PostQuitMessage(0);

break;

default:

/* Standardbehandlung der Nachrichten */

return DefWindowProc(hWnd, msg, wParam, lParam);

}

return (LRESULT) 0;

}

Wenn Sie dieses Programm zur Ausführung bringen, sehen Sie ein Fenster, das auf dem Bildschirm bewegt, in seiner Größe verändert sowie minimiert oder maximiert werden kann. Ebenso verfügt das Fenster über ein Systemmenü und enthält in seiner Titelleiste den von uns vorgegebenen Begrüßungstext "Hallo, ich bin das Beispiel-Fenster". Über mehr Funktionalität verfügt unser Fenster allerdings nicht - aber immerhin läßt es sich so handhaben, wie wir es von einem Fenster unter Windows erwarten.

Übersicht    

Stand: 28.01.99 17:44:54
© 1998,1999 by Hans Joachim Kiefer, hajokiefer@handshake.de