Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo escribir una interfaz gráfica en lenguaje C

Cómo escribir una interfaz gráfica en lenguaje C

Contraseña

# include ltwindows.h gt

Devolución de llamada LRESULT WndProc(HWND, UINT, WPARAM, LPARAM); //Declara la función utilizada para procesar mensajes.

int WINAPI WinMain(h instancia h instancia, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)

{

static TCHAR szapname[]= TEXT(" mi ventana ");

HWND hwnd

MSG MSG;

WNDCLASS wndclass//Declarar un objeto de clase de ventana

//Lo siguiente son Propiedades del objeto de clase de ventana wndclass.

wnd class .lpszclassname = SZ appname;? //Nombre de clase de ventana

wndclass.lpszMenuName = NULL//Menú de ventana: Ninguno

wnd class HBR background =(HBRUSH)GetStockObject(WHITE _ BRUSH); Color

wndclass.lpfnWndProc = WndProc? //Función de procesamiento de ventanas

wnd class.cbwndextra = 0;? //Extensión de instancia de ventana: Ninguna

wnd class cbclsextra = 0;? // Extensión de clase de ventana: Ninguna

wnd class .h instancia = h instancia;? //Identificador de instancia de ventana

wndclass.hIcon = LoadIcon(NULL,IDI_Application);? //Icono de minimizar ventana: utiliza el icono predeterminado.

wnd class . hcursor = load cursor(NULL, IDC_ARROW); //La ventana usa el cursor de flecha.

Si (!register class( amp; wndclass))

{//Registrar clase de ventana, aparecerá un mensaje de error si falla el registro.

MessageBox(NULL, TEXT("¡Error en el registro de la ventana!")), TEXT ("error "), MB_OK | MB_icon error);

Devuelve 0;

}

hwnd = CreateWindow(?//Crear una ventana

SzAppName, //Nombre de clase de ventana

TEXT("Mi ventana"),? //Título de la ventana

WS_OVERLAPPEDWINDOW,?//Estilo de la ventana

CW_USEDEFAULT, //Posición de visualización inicial de la ventana X: use el valor predeterminado.

CW_USEDEFAULT, //Posición de visualización inicial de la ventana y: use el valor predeterminado

CW_USEDEFAULT, //Ancho de la ventana: use el valor predeterminado

CW_USEDEFAULT, //Alto de la ventana: use el valor predeterminado. .

NULO,? //Ventana principal: Ninguna

NULL,? //Submenú: Ninguno

HInstancia, //¿Manejador de instancia de esta aplicación de ventana?

¿NULL? //

);

ShowWindow(hwnd, icmd show); //Mostrar ventana

Actualizar ventana (hwnd); //Actualizar ventana

while(GetMessage(amp; Msg, NULL, 0, 0)) //Obtiene el mensaje de la cola de mensajes.

{

Traducir mensaje(amp;msg); //Convertir mensaje de clave virtual en mensaje de caracteres

mensaje de envío(amp;msg);? //Distribuido a la función de devolución de llamada (función de proceso)

}

Devuelve msg.wParam

}

LRESULT devolución de llamada WndProc( HWND hwnd , mensaje UINT, WPARAM wParam, LPARAM lParam)

{

HDC hdc//Control del entorno del dispositivo

PAINTSTRUCT ps//Estructura de dibujo

rectángulo RECT;? //Estructura rectangular

Switch( mensaje) //Procesar el mensaje.

{

Caso WM_CREATE:? //Mensaje enviado al crear la ventana.

MessageBox(hwnd, TEXT("¡La ventana ha sido creada!")), TEXT("Mi ventana"), MB_OK | MB_icon información);

Devuelve 0;

Caso WM_PAINT:? // Maneja el mensaje enviado cuando el área de la ventana no es válida.

hdc = comenzar pintura(hwnd y PS);

GetClientRect(hwnd y rect

DrawText( hdc, Texto("Hola, Micro); tecnología complementaria ")), -1, amprect, DT_single line | DT_CENTER | DT_VCENTER);

Capa superior (hwnd amp; PS);

Devuelve 0;

Caso WM_LBUTTONDOWN: //Maneja el mensaje de que se presiona el botón izquierdo del mouse.

MessageBox(hwnd, TEXT("Se presionó el botón izquierdo del mouse."), TEXT ("hacer clic"), MB_OK | MB_icon información);

Devuelve 0 ;

Caso WM_DESTROY: //Maneja el mensaje cuando la ventana está cerrada.

MessageBox( hwnd, TEXT("¡Cerrar el programa!"), TEXT ("fin "), MB_OK | MB_icon información);

PostQuitMessage(0);

Return 0;

}

Return DefWindowProc(hwnd, message, wParam, lParam); //El procesamiento de DefWindowProc no es manejado por nuestro controlador de mensajes personalizado.

}