Yo tengo un pequeño ejemplo por aquí lo voy a pegar para que te sirva de punto de partida.
Código:
function WindowProc(hWnd, uMsg, wParam, lParam: Integer): Integer; stdcall; // Definimos la variable encargada de procesar los mensajes.
begin
Result := DefWindowProc(hWnd, uMsg, wParam, lParam);
If (uMsg = WM_DESTROY) then Halt; // Si damos al boton de la X, la aplicacion termina
If (lParam = Buton2) And (uMsg = WM_COMMAND) then begin // Si el mensaje viene del boton y es la pulsacion de este . . .
Halt; // Cerramos la Aplicacion.
end;
If (lParam = Buton1) And (uMsg = WM_COMMAND) then begin // Si el mensaje viene del boton y es la pulsacion de este . . .
Longitud := GetWindowTextLength(Edit1); // Averiguamos cual es la longitud del texto de la primera edit
GetMem(Sumando1,Longitud+1); // Cogemos memoria para el texto.
GetWindowText(Edit1,Sumando1,Longitud+1); // COgemos el texto que hay en el edit y lo almacenamos en la variable Sumando1
Longitud := GetWindowTextLength(Edit2); // Averiguamos cual es la longitud del texto de la segunda edit
GetMem(Sumando2,Longitud+1); // Cogemos memoria para el texto.
GetWindowText(Edit2,Sumando2,Longitud+1); // Cogemos el texto que hay en el edit y lo almacenamos en la variable Sumando2
Valor := StrToInt(Sumando1) + StrToInt(Sumando2); // Realizamos la suma.
SetWindowText(Edit3,Pchar(IntToStr(Valor))); // Ponemos el texto en el edit3
end;
end;
begin
Instancia := hInstance;
{ Damos a la variable instance, el handle que aplicara windows
a nuestro programa }
Fuente := CreateFont (-1, 0, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH + FF_DONTCARE,
'MS Sans Serif');
{ Creamos la fuente que usaremos en nuestra aplicacion }
with Clase do begin // Comenzamos a definir la clase de nuestro programa
Style := CS_CLASSDC or CS_PARENTDC; // Definimos el estilo
lpfnWndProc := @WindowProc; // La funcion que manejara los mensajes
hInstance := Instancia; // La handle de nuestra aplicacion
hbrBackGround := Color_btnFace+1; // El color de fondo
lpszClassName := 'MrRidk'; // El nombre de la class
hCursor := LoadCursor(0, IDC_ARROW); // El cursor que usara nuestra aplicacion
end; // Fin
RegisterClassA(Clase); // Registramos la clase en windows.
Handle := CreateWindowEx(0, 'MrRidk','Ejemplo de Programa Con Api', WS_SYSMENU + WS_VISIBLE, 150, 150, 280, 140, 0, 0, Instancia, Nil);
{Creamos la ventana, Estilo, Clase, Titulo, Estilo, Posicion, Tamaño, , El Padre de la ventana, El menu, La hInstance, El lParam.}
{ ************************************************************************************************************ }
Edit1 := CreateWindowEx(WS_EX_CLIENTEDGE,'Edit','3',WS_VISIBLE+WS_CHILD+BS_TEXT,90,10,175,20,Handle,0,Instancia,Nil);
{Creamos la ventana, Estilo, Tipo, Texto, Estilo, Posicion,Tamaño,Padre,Menu,hInstance,El lparam}
{ ************************************************************************************************************ }
Edit2 := CreateWindowEx(WS_EX_CLIENTEDGE,'Edit','2',WS_VISIBLE+WS_CHILD+BS_TEXT,90,31,175,20,Handle,0,Instancia,Nil);
{Creamos la ventana, Estilo, Tipo, Texto, Estilo, Posicion,Tamaño,Padre,Menu,hInstance,El lparam}
{ ************************************************************************************************************ }
Edit3 := CreateWindowEx(WS_EX_CLIENTEDGE,'Edit','5',WS_VISIBLE+WS_CHILD+BS_TEXT,90,52,175,20,Handle,0,Instancia,Nil);
{Creamos la ventana, Estilo, Tipo, Texto, Estilo, Posicion,Tamaño,Padre,Menu,hInstance,El lparam}
{ ************************************************************************************************************ }
Label1 := CreateWindow('Static','Sumando 1:',WS_VISIBLE + WS_CHILD, 10, 16,75,20,Handle,0,Instancia,Nil);
{Creamos la ventana, Tipo, Texto, Estilo, Posicion,Tamaño,Padre,Menu,hInstance,El lparam}
{ ************************************************************************************************************ }
Label2 := CreateWindow('Static','Sumando 2:',WS_VISIBLE + WS_CHILD, 10, 37,75,20,Handle,0,Instancia,Nil);
{Creamos la ventana, Tipo, Texto, Estilo, Posicion,Tamaño,Padre,Menu,hInstance,El lparam}
{ ************************************************************************************************************ }
Label3 := CreateWindow('Static','Resultado:',WS_VISIBLE + WS_CHILD, 10, 57,75,20,Handle,0,Instancia,Nil);
{Creamos la ventana, Tipo, Texto, Estilo, Posicion,Tamaño,Padre,Menu,hInstance,El lparam}
{ ************************************************************************************************************ }
Buton1 := CreateWindow('Button','Sumar', WS_VISIBLE + WS_CHILD, 65, 85, 60, 20, Handle,0,Instancia,Nil);
{Creamos la ventana, Tipo, Texto, Estilo, Posicion,Tamaño,Padre,Menu,hInstance,El lparam}
{ ************************************************************************************************************ }
Buton2 := CreateWindow('Button','Salir', WS_VISIBLE + WS_CHILD, 150, 85, 60, 20, Handle,0,Instancia,Nil);
{Creamos la ventana, Tipo, Texto, Estilo, Posicion,Tamaño,Padre,Menu,hInstance,El lparam}
{ ************************************************************************************************************ }
SendMessage(Label1,WM_SETFONT,Fuente,Label1); // Ponemos la fuente que antes hemos definido
SendMessage(Label2,WM_SETFONT,Fuente,Label1); // Ponemos la fuente que antes hemos definido
SendMessage(Label3,WM_SETFONT,Fuente,Label1); // Ponemos la fuente que antes hemos definido
SendMessage(Buton1,WM_SETFONT,Fuente,Buton1); // Ponemos la fuente que antes hemos definido
SendMessage(Buton2,WM_SETFONT,Fuente,Buton2); // Ponemos la fuente que antes hemos definido
SendMessage(Edit1,WM_SETFONT,Fuente,Edit1); // Ponemos la fuente que antes hemos definido
SendMessage(Edit2,WM_SETFONT,Fuente,Edit2); // Ponemos la fuente que antes hemos definido
SendMessage(Edit3,WM_SETFONT,Fuente,Edit3); // Ponemos la fuente que antes hemos definido
while (GetMessage(Mensaje, Handle, 0, 0)) do // Vamos tratando los mensajes.
begin
TranslateMessage(Mensaje);
DispatchMessage(Mensaje);
end;
end.