¿Cómo hacer una interfaz en lenguaje C?
Ventana vacía: #include?
/*?¿Todos los resultados de la ventana van aquí?*/
LRESULT?CALLBACK?WndProc (HWND ?hwnd,?UINT?Message,?WPARAM?wParam,?LPARAM?lParam)?{
switch(Message)?{
/*?Después de detenerse, informe al host Thread ¿detenido?*/
caso?WM_DESTROY:?{
PostQuitMessage(0);
descanso;
}
/*?¿Todos los demás mensajes se procesan utilizando el procedimiento predeterminado?*/
predeterminado:
return?DefWindowProc(hwnd,?Message,?wParam,?lParam);
}
return?0;
}
/*?La función principal del programa Win32?GUI: iniciar la ejecución desde aquí ? */
int?WINAPI?WinMain(HINSTANCE?hInstance,?HINSTANCE?hPrevInstance,?LPSTR?lpCmdLine,?int?nCmdShow)?{
WNDCLASSEX?wc;?/ * ?Estructura de atributos de la ventana?*/
HWND?hwnd;?/*?"Handle"?Identificador de una ventana?*/
MSG?Msg;?/*? ¿La ubicación temporal de todos los mensajes?*/
/*?¿Modificar la estructura y la configuración?*/
memset(&wc,0,sizeof(wc));
wc.cbSize ?=?sizeof(WNDCLASSEX);
wc.lpfnWndProc ?=?WndProc;?/*?¿Dónde enviar el mensaje?*/
wc. hInstance ?=?hInstance;
wc.hCursor ?=?LoadCursor(NULL,?IDC_ARROW);
/*?White, COLOR_WINDOW es el valor de color definido por el sistema, su valor es 5 ?*/
wc.hbrBackground?=?(HBRUSH)(COLOR_WINDOW+1);
wc.lpszClassName?=?"WindowClass";
wc .hIcon ?=?LoadIcon(NULL,?IDI_APPLICATION);?/*?¿Cargar un icono estándar?*/
wc.hIconSm ?=?LoadIcon(NULL,?IDI_APPLICATION);?/* ? ¿Usar el nombre "A" como icono del proyecto?*/
if(!RegisterClassEx(&wc))?{
MessageBox(NULL,?"Window?Registration?Failed!" ,"¡Error!",MB_ICONEXCLAMATION|MB_OK);
return?0;
}
hwnd?=?CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass"," Título",WS_VISIBLE|WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,?/*?x?*/
<p> CW_USEDEFAULT,?/*?y?*/
640,?/*?Ancho?*/
480,?/*?Alto?*/
NULL,NULL,hInstance,NULL);
if(hwnd?==?NULL)?{
MessageBox(NULL,?"Window?Creation?Failed!" ,"Error!",MB_ICONEXCLAMATION|MB_OK);
return?0;
}
/*
Todo el procesamiento de entrada y enviado al procedimiento de ventana.
Tenga en cuenta que este código de bloque fluye hasta que recibe algo, ?
por lo que el bucle no crea un uso excesivamente alto de la CPU. ?
*/
while(GetMessage(&Msg,?NULL,?0,?0)?>?0)?/*?Si no se recibe ningún error...* /
{
TranslateMessage(&Msg);?/*?Si el carácter clave de traducción existe*/
DispatchMessage(&Msg);?/*?Send a WndProc?*/
}
return?Msg.wParam;
}