¿Cómo programar una interfaz visual en lenguaje C?
//Llamar a la función API para crear una ventana
//Ejemplo:
#include
LRESULT CALLBACK WndProc ( HWND, UINT, WPARAM, LPARAM);// Función de procedimiento de ventana
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT("MyWindows");//Definir el nombre de la clase de ventana
HWND hwnd;// Identificador de ventana
MSG msg; // p >
WNDCLASS wndclass; ?//Clase de ventana
wndclass.style = CS_HREDRAW |//Especifique el tipo de ventana, se pueden usar varios "estilos de clase" (consulte a continuación ↓ para obtener más detalles) O combinación de operadores
wndclass.lpfnWndProc = WndProc;//Especifique el procedimiento de ventana (debe ser una función de devolución de llamada)
wndclass.cbClsExtra = 0;//Espacio adicional reservado, generalmente es 0
wndclass.cbWndExtra = 0;//Espacio adicional reservado, generalmente 0
wndclass.hInstance = hInstance;//Manejador de instancia de la aplicación
wndclass .hIcon = LoadIcon(NULL, IDI_APPLICATION);//Establecer un ícono para todas las ventanas según esta clase de ventana
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);//Establecer un ícono para todas Establecer un puntero del mouse basado en la ventana de esta clase de ventana
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//Especifique el color de fondo de la ventana
wndclass.lpszMenuName = NULL;/ /Especificar menú de ventana
wndclass.lpszClassName = szAppName;//Especificar nombre de clase de ventana
if (!RegisterClass(&wndclass))//Registrar ventana
{
MessageBox(NULL, TEXT("¡Este programa requiere Windows NT para ejecutarse! "), szAppName, MB_ICONERROR);
devuelve 0;
}
hwnd = CreateWindow(szAppName, ?//Crear ventana
TEXTO("ventanas"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hwnd , iCmdShow); ?//Mostrar ventana
UpdateWindo
w(hwnd); ?//Actualizar ventana, volver a dibujar
while (GetMessage(&msg, NULL, 0, 0)) //Recibe el mensaje
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, mensaje UINT, WPARAM wParam, LPARAM lParam)//Función de devolución de llamada
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
cambiar (mensaje)
{
caso WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
GetClientRect(hwnd, &rect);
DrawText(hdc, TEXT("¡El primer programa de ventana en lenguaje C!"), -1, &rect ,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint(hwnd, &ps);
devuelve 0;
caso WM_DESTROY: p>
PostQuitMessage(0);
devuelve 0;
}
devuelve DefWindowProc(hwnd, mensaje, wParam, lParam);
p>}