// Modèle -------- Byhottey2004-4-13-0: 18 //
// Site Web de l'auteur: http://asp.itdrp.com/hottey //
ProgramDelphi;
usages
fenêtres,
messages;
const
Hellostr = 'Helloworld!';
{$ Rdelphi.res}
// Fonction de traitement des messages de fenêtre.
functionmywinproc (hwnd: thandle; umsg: uint; wparam, lparam: cardinal): cardinal; exp
Ort; stdcall;
var
HDCA, HDCB: Thandle; // Description du périphérique Handle de table.
Rect: Trect; // Structure rectangulaire.
Police: Hfont;
PS: TpainTStruct; // Structure de dessin.
Commencer
Résultat: = 0;
Caseumsgof
Wm_paint:
Commencer
HDCA: = débutpaint (hwnd, ps);
SetBKMode (HDCA, transparent);
SetBKColor (HDCA, GetBKColor (HDCA));
GetClientRect (hwnd, rect); // obtenez la taille de la zone client de fenêtre.
DrawText (HDCA, PHAR (Hellostr), - 1, RECT, DT_SINGLelineordt_Centerordt
_VCenter);
// Textout (HDC, 100,40, Hellostr, Longueur (Hellostr));
Endpaint (hwnd, ps);
fin;
Wm_create:
Commencer
hdcb: = getdc (hwnd);
FONT: = CREATEFONT (45,0,0,0, FW_NORMAL, 0,0, ANSI_CHARSET, OUT
_default_precis, clip_default_precis,
default_quality, 34, pChar ('Arial'));
SelectObject (HDCB, FONT);
Libéré (HWND, HDCB);
fin;
Wm_destroy:
PostquitMessage (0)
autre
// Utilisez la fonction de traitement des messages de la fenêtre par défaut.
Résultat: = defwindowProc (HWnd, UMSG, WPARAM, LPARAM);
fin;
fin;
// Le programme principal commence.
var
MSG: TMSG; // Structure de message.
Hwnd, Hinst: Thandle; // Poignée de fenêtre Windows.
WinClass: TwndClassex; // Structure de classe Windows Window.
Commencer
hinst: = getmodulehandle (nil); // getTheApplicationInstanceance
WinClass.cbSize: = sizeof (twndclassex);
WinClass.lpszClassName: = 'myWindow'; // Nom de classe.
Winclass.style:=cs_hredraworcs_vredraworcs_owndc;
Winclass.hinstance: = hinst; // la poignée d'instance du programme.
// Définissez la fonction de traitement des messages de la fenêtre.
Winclass.lpfnwndproc: = @ MyWinProc; // Processus de fenêtre.
WinClass.cbclSExtra: = 0; // Les deux domaines suivants sont utilisés dans la structure et la fenêtre des classes
La structure de la fenêtre enregistrée à l'intérieur de S
Winclass.cbwndextra: = 0; // réserve un espace supplémentaire.
Winclass.hicon: = LoadIcon (hinstance, makeIntResource ('MainIcon'));
WinClass.Hiconsm: = LoadIcon (Hinstance, MakeIntResource ('MainIcon'));
WinClass.hcursor: = loadCursor (0, idc_arrow);
// getStockObject obtient un objet graphique, voici pour obtenir le pinceau qui dessine l'arrière-plan de la fenêtre, renvoyant un pinceau blanc
La poignée de l'enfant.
WinClass.hbrbackground: = hbrush (getStockObject (white_brush));
Winclass.lpszMenuname: = nil; // spécifiez le menu de classe de fenêtre.
// Enregistrez la classe de fenêtres avec Windows.
ifregisterClassex (winClass) = 0Then
Commencer
MessageBox (0, «RegisterationError!», «SDK / API», MB_OK);
Sortie;
fin;
// Créer un objet Window.
hwnd: = createwindowex (
WS_EX_OVERLAPTWindow, // style de fenêtre étendu.
Winclass.lpszclassName, // nom de classe.
'Hellowindow', // Titre de la fenêtre.
Ws_overlappwindow, // style de fenêtre.
Cw_usefault, // Le coin supérieur gauche de la fenêtre est relatif à l'écran
La position initiale x dans le coin supérieur gauche.
0, // .... à droite y.
CW_USEDEFAULT, // Largeur de fenêtre x.
0, // Hauteur de fenêtre y.
0, // Poignée de fenêtre parent.
0, // Poignée de menu de fenêtre.
hinst, //
nil); // Créer un pointeur de paramètre.
ifhwnd <> 0THEN
Commencer
Showwindow (hwnd, sw_shownormal); // afficher la fenêtre.
UpdateWindow (hwnd); // fenêtre d'instruction pour se rafraîchir.
SetWindowPos (hwnd, hwnd_topmost, 0,0,0,0, swp_nomove + swp_nosize);
fin
autre
MessageBox (0, «WindownotCreated!», «SDK / API», MB_OK);
// Programme de boucle de message principale.
tandis que l'Embsessage (msg, 0,0,0)
Commencer
TranslateMessage (msg); // convertir certains messages du clavier.
DispatchMessage (MSG); // Envoyez des messages au processus de fenêtre.
fin;
fin.
> En fait, la programmation Windows est quelque chose que tous ceux qui apprennent à écrire des programmes doivent maîtriser.
Le code ci-dessus n'est pas aussi rapide que le nouveau formulaire est utilisé dans Delphi, mais il peut vous dire ceci
Les choses qualifiées peuvent vous aider à mieux comprendre la boucle de message et d'autres choses.
.
> Remarque: Le code ci-dessus est littéralement traduit à partir de la programmation Windows () via la syntaxe C ++, et il n'y a pas de problème après le test.
S'il y a des erreurs dans l'annotation, veuillez me corriger! ^ _ ^
HOTEY sur le site Web de l'auteur 2004-5-19: http://asp.itdrp.com/hottey (par routine)