// Vorlage -------- BYHOTTEY2004-4-13-0: 18 //
// Website des Autors: http://asp.itdrp.com/hottey //
Programmdelphi;
Verwendung
Fenster,
Nachrichten;
Const
HelloStr = 'HelloWorld!';
{$ Rdelphi.res}
// Fenstermeldungsverarbeitungsfunktion.
functionMyWinProc (hwnd: Thandle; UMSG: Uint; Wparam, Lparam: Kardinal): Kardinal; exp
ort; stdcall;
var
HDCA, HDCB: Thandle; // Gerätebeschreibungstabelle Handle.
RECHT: TRECT; // Rechteckige Struktur.
Schriftart: Hfont;
PS: TPaintstruct; // Zeichnungsstruktur.
Beginnen
Ergebnis: = 0;
hasumsgof
Wm_Paint:
Beginnen
HDCA: = beginpaint (hwnd, ps);
SetBkMode (HDCA, transparent);
SetBkColor (HDCA, GETBKCOLOR (HDCA));
GetClientRect (Hwnd, Rect); // Erhalten Sie die Größe des Fensters Client -Bereich.
DrawText (HDCA, PChar (HelloStr),-1, rect, dt_singlelineordt_centerordt
_VCenter);
// textout (HDC, 100,40, Hellostr, Länge (hellostr));
Endpaint (hwnd, ps);
Ende;
Wm_create:
Beginnen
HDCB: = getdc (hwnd);
Schriftart: = createFont (45,0,0,0, fw_normal, 0,0, ANSI_CHARSET, OUT
_default_precis, clip_default_precis,
default_Quality, 34, pchar ('arial'));
SelectObject (HDCB, Schriftart);
ReleaseC (Hwnd, HDCB);
Ende;
Wm_destroy:
PostQuitMessage (0)
anders
// Verwenden Sie die Funktionsverarbeitungsfunktion der Standardfenster.
Ergebnis: = DefwindowProc (Hwnd, UMSG, WPARAM, LPARAM);
Ende;
Ende;
// Das Hauptprogramm beginnt.
var
MSG: TMSG; // Nachrichtenstruktur.
hwnd, hinst: Thandle; // Windows -Fensterhandle.
WinClass: Twndclassex; // Windows -Fensterklassenstruktur.
Beginnen
Hinst: = GetModuleHandle (NIL); // GettheApplicationInstance
Winclass.cbSize: = sizeof (twndclassex);
Winclass.lpszclassName: = 'myWindow'; // Klasse Name.
Winclass.Style:=cs_Hredraworcs_vredraworcs_owndc;
Winclass.Hinstance: = hinst; // die Instanzhandlung des Programms.
// Die Verarbeitungsfunktion der Fenstermeldung festlegen.
Winclass.lpfnwndproc: =@mywinProc; // Fensterprozess.
Winclass.cbclsextra: = 0; // Die folgenden zwei Domänen werden in Klassenstruktur und Fenster verwendet
Die Fensterstruktur wurde in s gespeichert
Winclass.cbwndextra: = 0; // reserviere zusätzlichen Platz in WinClass.
Winclass.hicon: = loadicon (Hinstance, MakeIntresource ('Mainicon');
Winclass.hiconsm: = loadicon (Hinstance, MakeIntresource ('Mainicon');
Winclass.hcursor: = loadCursor (0, idc_arrow);
// GetStockObject erhält ein Grafikobjekt. Hier wird der Pinsel abgerufen, der den Fensterhintergrund zeichnet und einen weißen Pinsel zurückgibt
Der Griff des Kindes.
Winclass.hbrbackground: = hbrush (getStockObject (White_brush));
Winclass.lpsZMenuname: = nil; // Geben Sie das Menü "Fensterklassen" an.
// Fensterklasse mit Windows registrieren.
IfregisterClassex (WinClass) = 0Then
Beginnen
MessageBox (0, 'RegisterationError!', 'SDK/API', MB_OK);
Ausfahrt;
Ende;
// Fensterobjekt erstellen.
hwnd: = createwindowex (
WS_EX_OVERLADDWINDOW, // erweiterter Fensterstil.
Winclass.lpszclassName, // Klassenname.
'Hellowindow', // Fenstertitel.
WS_OVERLAPTWINDOW, // Fensterstil.
CW_USEDEFAULT, // Die obere linke Ecke des Fensters ist relativ zum Bildschirm
Die Anfangsposition x in der oberen linken Ecke.
0, // .... Right y.
CW_USEDEFAULT, // Fensterbreite x.
0, // Fensterhöhe y.
0, // übergeordnetes Fensterhandwerk.
0, // Fenstermenühandle.
Hinst, // Programminstanz Handle.
nil); // Parameterzeiger erstellen.
IFHWND <> 0Then
Beginnen
ShowWindow (hwnd, sw_shownormal); // Show -Fenster.
UpdateWindow (hwnd); // Anleitungsfenster, um sich selbst zu aktualisieren.
SetWindowPos (hwnd, hwnd_top meiste, 0,0,0,0, swp_nomove+swp_nosize);
Ende
anders
MessageBox (0, 'WindownotCreated!', 'SDK/API', MB_OK);
// Hauptmeldungsschleifenprogramm.
Während derGetMessage (MSG, 0,0,0) tun
Beginnen
TranslateMessage (MSG); // bestimmte Tastaturnachrichten konvertieren.
SISPATCHMESSAGE (MSG); // Nachrichten an den Fensterprozess senden.
Ende;
Ende.
> In der Tat ist Windows -Programmierung etwas, das das Schreiben von Programmen meistern muss.
Der obige Code ist nicht so schnell wie in Delphi verwendet, aber es kann Ihnen sagen, dass Sie dies sagen können
Qualifizierte Dinge können Ihnen helfen, die Nachrichtenschleife und andere Dinge besser zu verstehen.
.
> Hinweis: Der obige Code wird buchstäblich von Windows Programming () über C ++ Syntax übersetzt, und nach dem Testen gibt es kein Problem.
Wenn die Annotation Fehler gibt, korrigieren Sie mich bitte!^_^
HOTTEY ON 2004-5-19 Autorenwebsite: http://asp.itdrp.com/hottey (nach Routine)