// Plantilla -------- Byhottey2004-4-13-0: 18 //
// Sitio web del autor: http://asp.itdrp.com/hottey //
ProgramDelphi;
usos
Windows,
mensajes;
estúpido
HelloStr = 'Helloworld!';
{$ Rdelphi.res}
// Función de procesamiento de mensajes de ventana.
functionMyWinProc (hwnd: thandle; umsg: uint; wparam, lparam: cardenal): cardinal; exp)
ort; stdcall;
varilla
HDCA, HDCB: Thandle; // Mango de tabla Descripción del dispositivo.
rect: trect; // estructura rectangular.
Font: hfont;
PS: TPaintStruct; // Estructura de dibujo.
Comenzar
resultado: = 0;
Caseumsgof
WM_Paint:
Comenzar
HDCA: = beginPaint (hwnd, ps);
SetBkMode (HDCA, transparente);
SetBkColor (HDCA, getBkColor (HDCA));
GetClientRect (HWND, RECT); // Obtenga el tamaño del área del cliente de la ventana.
DrawText (HDCA, PCHAR (HelloStr),-1, RECT, DT_SINGLINEORDT_CENTERORDT
_Vcenter);
// TextOut (HDC, 100,40, HelloStr, Longitud (HelloStr));
EndPaint (HWND, PS);
fin;
Wm_create:
Comenzar
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, fuente);
Liberadoc (hwnd, hdcb);
fin;
Wm_destroy:
PostQuitMessage (0)
demás
// Use la función de procesamiento de mensajes de ventana predeterminada.
Resultado: = defwindowproc (hwnd, umsg, wparam, lparam);
fin;
fin;
// comienza el programa principal.
varilla
Msg: tmsg; // estructura de mensajes.
hwnd, hinst: thandle; // asa de la ventana de Windows.
WinClass: twndclassex; // Windows Window Class Structure.
Comenzar
hinst: = getModuleHandle (nil); // getTheApplicationInstance
WinClass.cbsize: = sizeof (twndclassex);
WinClass.lpszClassName: = 'mywindow'; // nombre de clase.
WinClass.style:=CS_Hredraworcs_vredraworcs_owndc;
WinClass.hinstance: = hinst; // El mango de instancia del programa.
// Establecer la función de procesamiento de mensajes de la ventana.
WinClass.lpfnwndproc: =@mywinproc; // Proceso de ventana.
WinClass.cbclsextra: = 0; // Los siguientes dos dominios se usan en la estructura de clase y la ventana
La estructura de la ventana guardada dentro de S
WinClass.cbwndextra: = 0; // Reserve un espacio adicional en WinClass.
WinClass.hicon: = Loadicon (Hinstance, MakeIntresource ('Mainicon'));
WinClass.hiconsm: = LoadiCon (Hinstance, MakeIntresource ('Mainicon'));
WinClass.hcursor: = LoadCursor (0, IDC_ARROW);
// getstockObject obtiene un objeto gráfico, aquí está para obtener el pincel que dibuja el fondo de la ventana, devolviendo un cepillo blanco
El mango del niño.
WinClass.hbrbackground: = HBrush (getStockObject (white_brush));
WinClass.lpszMenUname: = nil; // Especifique el menú de la clase de la ventana.
// Registre la clase de ventana con Windows.
ifregisterClassex (WinClass) = 0then
Comenzar
MessageBox (0, 'RegistrationError!', 'SDK/API', MB_OK);
Salida;
fin;
// Crear objeto de ventana.
hwnd: = createwindowex (
WS_EX_OVERLAPPEDWindow, // Estilo de ventana extendido.
WinClass.lpszClassName, // nombre de clase.
'Hellowindow', // Título de la ventana.
WS_OVERLAPTYWindow, // estilo de ventana.
CW_USEDEFAULT, // La esquina superior izquierda de la ventana es relativa a la pantalla
La posición inicial x en la esquina superior izquierda.
0, // .... correcto y.
CW_USEDEFAULT, // Ancho de ventana x.
0, // altura de la ventana y.
0, // mango de la ventana principal.
0, // mango del menú de ventana.
Hinst, // Mango de instancia del programa.
nil); // Crear puntero de parámetros.
ifhwnd <> 0then
Comenzar
Showwindow (hwnd, sw_shownormal); // show window.
UpdateWindow (hwnd); // Ventana de instrucciones para actualizarse.
SetWindowPos (hwnd, hwnd_topmost, 0,0,0,0, swp_nomove+swp_nosize);
fin
demás
MessageBox (0, 'WindownotCreated!', 'SDK/API', MB_OK);
// programa principal de bucle de mensajes.
whaygetMessage (msg, 0,0,0) lo hace
Comenzar
TranslateMessage (MSG); // Convertir ciertos mensajes de teclado.
DispatchMessage (msg); // Enviar mensajes al proceso de la ventana.
fin;
fin.
> De hecho, la programación de Windows es algo que todos los que aprenden a escribir programas deben dominar.
El código anterior no es tan rápido como se usa la forma nueva en Delphi, pero puede decirle esto
Las cosas calificadas pueden ayudarlo a comprender mejor el bucle de mensajes y otras cosas.
.
> Nota: El código anterior se traduce literalmente de la programación de Windows () a través de la sintaxis C ++, y no hay problema después de la prueba.
Si hay algún error en la anotación, ¡corrígeme!^_^
Hottey en 2004-5-5-19 Sitio web del autor: http://asp.itdrp.com/hottey (por rutina)