Red de conocimiento informático - Material del sitio web - ¿Cómo programar una interfaz visual en lenguaje C?

¿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; //

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:

PostQuitMessage(0);

devuelve 0;

}

devuelve DefWindowProc(hwnd, mensaje, wParam, lParam);

p>

}