Red de conocimiento informático - Computadora portátil - ¿Cómo crear una interfaz gráfica en lenguaje C?

¿Cómo crear una interfaz gráfica en lenguaje C?

¿Es este el programa de interfaz más simple? :?//?do. cpp? :? Define el punto de entrada de la aplicación.

//

#Contiene? " stdafx.h "

#¿Contiene? "c.h "

#¿Definición? ¿MAX_LOADSTRING? 100

//?Variable global:

HINSTANCIA? hInst//?Instancia actual

TCHAR? Título SZ[MAX _ LOADSTRING]; //Texto de la barra de título

TCHAR? szWindowClass[MAX _ LOADSTRING]; //?Nombre de clase de ventana principal

//?Declaración directa de las funciones contenidas en este módulo de código:

ATOMMyRegisterClass(hin instancia?hin instancia) ;

BOOLInitInstance(h instancia, int);

LRESULT? callbackndproc(HWND, UINT?WPARAM,?LPARAM);

INT_PTR? CallbackAbout(HWND, UINT?WPARAM,?LPARAM);

int? ¿APENTRÍA? _ twin main(hin instancia? hInstance,

HINSTANCE? hPrevInstance,

LPTSTRlpCmdLine,

int? nCmdShow)

{

sin referencia _ PARAMETER(hPrevInstance);

sin referencia _ PARAMETER(lpCmdLine);

//?TODO:? Pon el código aquí.

¿MSG? glutamato monosódico;

¿Hassel? hAccelTable

//?Inicializar cadena global

LoadString(hInstance, IDS_APP_TITLE,? szTitle,? MAX_LOADSTRING);

LoadString(hInstance, IDC_C, ? szWindowClass, ? MAX_LOADSTRING);

MyRegisterClass(h instancia);

//?Realizar la inicialización de la aplicación:

¿Si? (!InitInstance? (hInstance, ?nCmdShow))

{

¿Regresión? Falso;

}

hAccelTable? =?LoadAccelerators(hInstance,MAKEINTRESOURCE(IDC_C));

//?Bucle de mensajes principal:

¿Cuándo? (GetMessage(&MSG,?NULL,?0,?0))

{

¿Si? (!TranslateAccelerator(msg.hwnd, hAccelTable? ampmsg))

{

Traducir mensaje (amp msg);

mensaje de envío (amp; msg);

}

}

¿Volver? (int)? msg.wParam

}

//

//Función:? MyRegisterClass()

//

//Propósito:? Registrar clase de ventana.

//

//Nota:

//

//A menos que quieras

/ / este código y agregarlo? ¿Windows? ¿"RegisterClassEx" en 95?

//¿Antes de la función? ¿Win32? Esta característica y su uso sólo son necesarios si el sistema es compatible. Es muy importante llamar a esta función.

//Para que la aplicación pueda obtener el icono asociado

//bien formateado.

//

¿ÁTOMO? MyRegisterClass(HINSTANCE?hInstance)

{

WNDCLASSEX? wcex

wcex.cb¿Tamaño? =?sizeof(WNDCLASSEX);

wcex.style =? ¿CS_HREDRAW? |?CS_VREDRAW

wcex.lpfnWndProc =? WndProc

wcex.cbClsExtra=? 0;

wcex.cbWndExtra=? 0;

wcex.hInstancia =? hInstancia

wcex.hIcon =? LoadIcon(hInstance,MAKEINTRESOURCE(IDI_C));

wcex.hCursor =? LoadCursor(NULL, IDC_ARROW);

wcex.hbrBackground =? (HBRUSH)(COLOR_WINDOW 1);

wcex.lpszMenuName =? MAKEINTRESOURCE(IDC_C);

wcex .lpsz nombre de clase =? szWindowClass

wcex . hola consm =? LoadIcon(wcex.hInstance,MAKEINTRESOURCE(IDI_small));

¿Regresión? registrar classex(amp;wcex);

}

//

//?Función:? Instancia inicial (HINSTANCE, int)

//

//?Propósito:? Guarde el identificador de instancia y cree la ventana principal

//

//?Nota:

//

//En este función, guardamos el identificador de instancia en una variable global

//Crea y muestra la ventana principal del programa.

//

¿Booleano? InitInstance(hin instancia?hInstance?int?nCmdShow)

{

HWND? hWnd

hInst? =?hInstancia? ///? Almacena el identificador de instancia en una variable global.

hWnd? =?CreateWindow(szWindowClass, szTitle, ?WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT, ?0, ?CW_USEDEFAULT, ?0, ?NULL, ?NULL, ?hInstance?NULL);

Si? (!hWnd)

{

¿Volver? Falso;

}

Mostrar ventana (hWnd, nCmdShow);

Actualizar ventana (hWnd);

¿Volver? Verdadero;

}

//

//Función:? WndProc(HWND, UINT? WPARAM,? LPARAM)

//

//Propósito:? Manejar mensajes en la ventana principal.

//

//WM_COMMAND-? Usando el menú de la aplicación

//WM_PAINT-? Dibujar la ventana principal

//WM _ DESTROY-? Envía un mensaje de salida y regresa.

//

//

¿RESULTADO? ¿Llamar de vuelta? WndProc(HWND?hWnd,?UINT?Message,?WPARAM?wParam,?LPARAM?lParam)

{

int? wmid,? wmEvent

¿PAINTSTRUCT? PD;

¿HDC? hdc

¿Cambiar? (Noticias)

{

¿Caso? WM_Command:

wmId=? Loward(wParam);

wmEvent? =?Khiva(wParam);

//?Selección del menú de análisis:

¿Cambiar? (wmId)

{

¿Caso? IDM_About:

Dialog(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), ?hWnd, ?About);

Romper

Caso? IDM_EXIT:

Destruir ventana (hWnd);

Romper;

Valor predeterminado:

¿Regresar? DefWindowProc(hWnd, mensaje, ?wParam, ?lParam);

}

Romper

Caso? WM_PAINT:

hdc? =?BeginPaint(hWnd, ampPS);

//?TODO:? Agregue cualquier código de dibujo aquí. ...

EndPaint(hWnd, ampPS);

Romper;

¿Caso? WM_DESTROY:

PostQuitMessage(0);

Interrupción;

Predeterminado:

¿Volver? DefWindowProc(hWnd, mensaje, ?wParam, ?lParam);

}

¿Regresar? 0;

}

//?Manejador de mensajes para el cuadro "Acerca de".

¿INT_PTR? ¿Llamar de vuelta? About(HWND?hDlg,?UINT?Message,?WPARAM?wParam,?LPARAM?lParam)

{

sin referencia _ PARAMETER(lParam);

¿Cambiar? (Noticias)

{

¿Caso? WM_INITDIALOG:

¿Volver? (INT_PTR)VERDADERO;

¿Caso? WM_COMMAND:

¿SI? (Loward(wParam)?==?IDOC?||?Loward(wParam)?==?IDCANCEL)

{

EndDialog(hDlg,? LOWORD(wParam));

¿Volver? (INT _ PTR)VERDADERO;

}

Romper;

}

¿Regresar? (INT_PTR)FALSO;

}