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

Código

#include

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM //Declara el programa utilizado para procesar); Función de mensajes

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow )

{

static TCHAR szAppName[] = TEXT("MyWindow " );

HWND hwnd ;

MSG msg ;

WNDCLASS wndclass ; //Declarar un objeto de clase de ventana

//El lo siguiente son los atributos del objeto de clase de ventana wndclass

wndclass.style = CS_HREDRAW | CS_VREDRAW; //Estilo de ventana

wndclass.lpszClassName = szAppName; >

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

wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); //Color de fondo de la ventana

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

wndclass.cbWndExtra = 0; ?//Extensión de instancia de ventana: Ninguna

wndclass.cbClsExtra = 0; Ninguno

p>

wndclass.hInstance = hInstance ? //Identificador de instancia de ventana

wndclass.hIcon = LoadIcon( NULL, IDI_APPLICATION ) //Icono de minimización de ventana: use el predeterminado icon

wndclass.hCursor = LoadCursor( NULL, IDC_ARROW ) ; //La ventana usa un cursor de flecha

if( !RegisterClass( &wndclass ) )

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

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

return 0 ;

}

hwnd = CreateWindow( ? //Crear ventana

szAppName, //Nombre de clase de ventana

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

WS_OVERLAPPEDWINDOW,

? //Estilo de ventana

CW_USEDEFAULT, //Posición de visualización inicial de la ventana x: usar el valor predeterminado

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

p>

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

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

NULL, ?//Ventana principal :Ninguno

NULL, ?//Submenu:Ninguno

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

NULL ?

) ;

ShowWindow( hwnd, iCmdShow ) ; //Mostrar ventana

UpdateWindow( hwnd ) //Actualizar ventana

while( GetMessage( &msg, NULL, 0, 0 ) ) //Obtener el mensaje de la cola de mensajes

{

TranslateMessage( &msg ) //Convertir el mensaje de clave virtual en un mensaje de caracteres<; /p>

DispatchMessage( &msg );//Distribuir a la función de devolución de llamada (función de proceso)

}

return msg.wParam ;

}

LRESULT CALLBACK WndProc( HWND hwnd, mensaje UINT, WPARAM wParam, LPARAM lParam )

{

HDC hdc; // Identificador del entorno del dispositivo

PAINTSTRUCT ps; //Dibujar estructura

RECT rect ? //Estructura rectangular

switch( mensaje ) //Mensaje procesado

{

case WM_CREATE: ?//Mensaje enviado cuando se completa la creación de la ventana

MessageBox( hwnd, TEXT("¡La ventana ha sido creada!"), TEXT("Mi ventana" ), MB_OK | MB_ICONINFORMATION );

return 0;

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

hdc = BeginPaint( hwnd , &ps );

GetClientRect( hwnd, &rect );

DrawText( hdc, TEXT( "¡Hola, tecnología Weiban!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER ) ;

EndPaint( hwnd, &ps );

return 0 ;

case WM_LBUTTONDOWN: //Maneja el mensaje de que se presiona el botón izquierdo del mouse< / p>

MessageBox( hwnd, TEXT("Se presiona el botón izquierdo del mouse.

"), TEXT("clic"), MB_OK | MB_ICONINFORMATION ) ;

return 0;

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

MessageBox( hwnd, TEXT("¡Cerrar programa!"), TEXT("Fin"), MB_OK | MB_ICONINFORMATION );

PostQuitMessage( 0 );

return 0;

p>

}

return DefWindowProc( hwnd, message, wParam, lParam ); //DefWindowProc maneja mensajes que no son procesados ​​por nuestra función de procesamiento de mensajes personalizada

}