Programación de interfaz gráfica en lenguaje C
#pragma comment (enlazador, "/SUBSYSTEM:Windows/ENTRY:mainCRTStartup ")
# include & ltwindows.h & gt
/*Hacer que el nombre de la clase sea una variable global*/
char SZ class name[]= "aplicación de Windows";
/*Esta función es llamada por la función interna de Windows DispatchMessage () */
Procedimiento de ventana de devolución de llamada LRESULT (HWND hwnd, mensaje UINT, WPARAM wParam, LPARAM lParam)
{
HDC hdc
PAINTSTRUCT ps
Rectángulo RECT;
Interruptor (mensaje)/*Procesando información*/
{
Caso WM_DESTROY:
PostQuitMessage(0); /*Enviar WM_QUIT a la cola de mensajes*/
Pausa; p>
Caso WM_PAINT:
hdc = comenzar pintura(hwnd & PS);
GetClientRect(hwnd &rect);
DrawText ( hdc, Texto ("¡Hola, Windows NT!"), -1, & amprect, DT_single line DT_CENTER);
topcoat(hwnd&PS);
p>Break;
Valor predeterminado: /*Mensaje no controlado*/
Devuelve DefWindowProc (hwnd, message, wParam, lParam);
}
Devuelve 0;
}
/*Esta es la función principal*/
int main (void)
{
h instancia hThisInstance = GetModuleHandle(NULL);
int nFunsterStil = SW _ SHOW
HWND hwnd/*Este es el identificador de la ventana */ p>
Mensaje MSG; /*Los mensajes de la aplicación se almacenan aquí*/
WNDCLAS * wincl/*Estructura de datos de la clase de ventana*/
/ *Estructura de la ventana*/
wincl.hInstance = hThisInstance
wincl .lpsz nombre de clase = SZ nombre de clase;
wincl = procedimiento de ventana /* Esta función es llamada por el. Sistema operativo Windows */
wincl.style = CS _ DBLCLKS/*Obtener el comando de doble clic*/
wincl .CB size = sizeof(WNDCLAS *);
p>
/*Usar icono predeterminado y puntero del mouse*/
wincl.hIcon = LoadIcon (NULL, IDI_Application);
wincl.hIconSm = LoadIcon ( NULL, IDI_Application);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszM
enuName = NULL /*Sin menú*/
wincl .cbcl * tra = 0; /*No hay bytes adicionales después de la clase de ventana*/
wincl . Instancia de estructura o ventana*/
/*Utilice el color predeterminado de la ventana como color de fondo*/
wincl HBR BACKGROUND = (HBRUSH)COLOR _ BACKGROUND
/*Registrar clase de ventana. Si el registro falla, salga del programa */
If (!RegisterClas*.wincl))
Return 0;
/*La clase de ventana ha sido registrada . El programa que lo creó*/
hwnd = CreateWindowEx(
0,
Szclassname, /*class name*/
" Aplicación de Windows", /*texto en la barra de título de la ventana*/
WS_OVERLAPPEDWINDOW, /*ventana predeterminada*/
CW_USEDEFAULT, /*posición de la esquina superior izquierda de la ventana* /
CW_USEDEFAULT, /*ubicado en la esquina inferior derecha de la ventana*/
544, /*ancho de la ventana (píxeles)*/
375, /*alto de la ventana (píxeles)* /
HWND_DESKTOP, /* la ventana es una subventana del escritorio*/
NULL, /*Esta ventana no tiene menú*/
Htisinstancia, /*Identificador de instancia del programa*/
NULL /*La ventana no crea ningún dato*/
);
/*Ventana de visualización*/
ShowWindow (hwnd, nFunsterStil);
/*Ejecuta el bucle de mensajes. Vaya a la función GetMessage() y devuelva 0 */
while(GetMessage(& Message, NULL, 0, 0))
{
/ * Traducir información virtual en información de rol*/
Mensaje de traducción (& mensaje amp);
/*El proceso de envío de información a la ventana*/
despacho message(amp; message);
}
/*Devuelve el valor de retorno de la función PostQuitMessage()*/
devuelve mensajes.wParam
}