DarkWinAPI by Darkleo.com
Windowsfenster mit funktionen
#define STRICT #define WIN32_LEAN_AND_MEAN #include <windows.h> #include <windowsx.h> static HINSTANCE hInstance; static HWND hwndMain; static TCHAR szMainWndClass[] = TEXT("HauptfensterKlasse"); static TCHAR szHalloMsg[] = TEXT("Achtung Windows!"); // Funktion WmPaint static void WmPaint(HWND hwnd) { PAINTSTRUCT ps; HDC hdc; hdc = BeginPaint(hwnd, &ps); TextOut(hdc,100, 100,szHalloMsg); EndPaint(hwnd, &ps); } //Hauptfensterprozedur static LRESULT WINAPI Hauptfensterprozedur(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DESTROY: PostQuitMessage(0); return 0; case WM_PAINT: return HANDLE_WM_PAINT(hwnd, wParam, lParam, WmPaint); } return DefWindowProc(hwnd, uMsg, wParam, lParam); } //Funktion RegisterMainWindow static BOOL RegisterMainWindow(void) { WNDCLASS wg; wg.style = 0; wg.lpfnWndProc = Hauptfensterprozedur; wg.cbClsExtra = 0; wg.cbWndExtra = 0; wg.hInstance = hInstance; wg.hIcon = LoadIcon(NULL, IDI_APPLICATION); wg.hCursor = LoadCursor(NULL, IDC_ARROW); wg.hbrBackground = GetSysColorBrush(COLOR_WINDOW); wg.lpszMenuName = NULL; wg.lpszClassName = szMainWndClass; return RegisterClass(&wg) !=0; } //Funktion CreateMainWindow static BOOL CreateMainWindow(void) { hwndMain = CreateWindowEx( WS_EX_CLIENTEDGE, szMainWndClass, TEXT("Hallo Darkleo.com"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, (HWND)NULL, (HMENU)NULL, hInstance, NULL); return hwndMain != NULL; } //WinMain Start Einsprung des Programms int WINAPI WinMain(HINSTANCE hinst, HINSTANCE hinstPrev, LPSTR lpszCmdLine, int nCmdShow) { MSG msg; hInstance = hinst; if (!RegisterMainWindow()) return 0; if (!CreateMainWindow()) return 0; ShowWindow(hwndMain, nCmdShow); UpdateWindow(hwndMain); while (GetMessage(&msg, NULL, 0, 0)) //Das Herz jedes Windowsprogramms { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } |
1 Überprüft die Variable ANSI/ UNI
2 Nicht laden von weiter unnötig verlinkten *.H
3,4 Einbinden von Header Dateien
6,10 Definition von static Variablen die nach wieder anklicken in das
Programm unverändert bleiben, weil andere Programme auf diese Variablen keinen
zugriff haben.
13 WmPaint Funktion
15 PAINTSTRUCT strukturvariable definieren
16 HDC-handle device context variable definieren
18 System Kontext vom System ausleihen
19 Text ausgeben
20 System Kontext ans System zurück geben
21 Ende der WmPaint Funktion
24 Hauptfensterprozedur wird in RegisterMainWindow(40) in (44)
definiert.
27 Die gesamte switch verarbeitet die Nachrichten
29 WM_DESTROY oben rechts das kreuz
30 PostQuitMessage(0) gibt eine Message ins Systemwarteschlange zum
Beenden des Programms in (97) wird die Nachricht ankommen und die
while schleife unterbrochen, Programm ende.
31 Beenden der Hauptfensterprozedur
33 WM_PAINT ob das Fenster noch mal gezeichnet werden soll
34 Funktionsaufruf der WmPaint Funktion.
36 Sende alle nicht verarbeiteten Nachrichten wieder ins System zurück.
40-54 RegisterMainWindow in dieser Funktion wird das Fenster im System
Registriert z.B. Fenstergröße, Fensterfarbe usw. die Funktion wird in (91)
aufgerufen wenn ein Fehler passiert wird das Programm Beendet.
57-82 CreateMainWindow wird das Fenster im Speicher vorbereitet die
Funktion wird in (92) aufgerufen wenn ein Fehler passiert wird das
Programm Beendet.
85-103 Ist die Hauptfunktion WinMain von hier aus werden fast alle
anderen Funktionen aufgerufen (Direkt und Indirekt) außer
Hauptfensterprozedur die wird vom System aufgerufen
91 RegisterMainWindow wenn ein Fehler passiert wird das Programm Beendet.
92 CreateMainWindow wenn ein Fehler passiert wird das Programm Beendet.
94 ShowWindow Fensteranzeigen
95 UpdateWindow Fensteranzeige Aktualisieren (Neuzeichnen)
97-101 Verarbeiten von Nachrichten
99 TranslateMessage Decodieren von Eingabe Zeichen
100 DispatchMessage Verteilen der Nachrichten auf die Funktionen wie z.B.
Hauptfensterprozedur