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

Cómo crear una interfaz gráfica usando lenguaje C

¿Es este el programa de interfaz más simple?

Este es el programa de interfaz más simple:?//?c++.cpp?:?Define el punto de entrada de la aplicación.

//

#include?"stdafx.h"

#include?"c++.h"

#define?MAX_LOADSTRING ?100

//?Variable global:

HINSTANCE?hInst; //Instancia actual

TCHAR?szTitle[MAX_LOADSTRING] //Barra de título; Texto

TCHAR?szWindowClass[MAX_LOADSTRING]; //?Nombre de clase de ventana principal

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

ATOM MyRegisterClass (HINSTANCE?hInstance);

BOOL InitInstance(HINSTANCE,?int);

LRESULT?CALLBACK WndProc(HWND,?UINT,?WPARAM,?LPARAM);

p>

INT_PTR?CALLBACK About(HWND,?UINT,?WPARAM,?LPARAM);

int?APIENTRY?_tWinMain( HINSTANCE?hInstance, HINSTANCE?hPrevInstance, LPTSTRlpCmdLine, intnCmdShow)

{

UNREFERENCED_PARAMETER( hPrevInstance);

UNREFERENCED_PARAMETER(lpCmdLine); //TODO:?Pon tu código aquí.

MSG?msg;

HACCEL?hAccelTable;

//Inicializar cadena global

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

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

MyRegisterClass(hInstance);

// inicialización de la aplicación:

if(!InitInstance?(hInstance,?nCmdShow))

{

return?FALSE;

}

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

///?Bucle de mensajes principal:

while(GetMessage(&msg, ?NULL ,?0,?0))

{

if(!TranslateAccelerator(msg.hwnd,?hAccelTable,?))

if (! TranslateAccelerator( msg.hwnd,?hAccelTable,?&msg))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

}

return?(int)?msg.wParam;

}

//

/?Función:?MyRegisterClass()

//

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

//

/?Nota:

//

//Solo necesitas usar esta función cuando sea necesario

//Este código es compatible con "RegisterClassEx"

//La función se agregó a los sistemas "Windows?95" y "Win32" antes de su uso. Es muy importante llamar a esta función

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

//"formateado correctamente".

//

ATOM?MyRegisterClass(HINSTANCE?hInstance)

{

WNDCLASSEX?wcex;

wcex.cbSize?=?sizeof(WNDCLASSEX);

wcex.cbSize? p>

wcex.style =?CS_HREDRAW?|?CS_VREDRAW;

wcex .lpfnWndProc =?WndProc;

wcex.cbClsExtra =?0;

wcex.cbWndExtra =?0;

wcex.hInstance =?hInstance;

p> p>

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.lpszClassName =?szWindowClass;

wcex.hIconSm =?LoadIcon(wcex.hInstance,?MAKEINTRESOURCE(IDI_SMALL));

return?RegisterClassEx(&wcex);

}

/ /

// Guarde el identificador de instancia y cree la ventana principal

//

// Comentarios:

//

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

//// creamos y mostramos la ventana principal del programa.

//

BOOL?InitInstance(HINSTANCE?hInstance,?int?nCmdShow)

{

HWND?hWnd; p>

hInst?=?hInstance;?//?Almacenar el identificador de instancia en una variable global

hWnd?=?CreateWindow(szWindowClass,?szTitle,?WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,?0 ,? CW_USEDEFAULT,?0,?NULL,?NULL,?hInstance,?NULL);

if(!hWnd)

{return?FALSE;

}

ShowWindow(hWnd,?nCmdShow);

UpdateWindow( hWnd);

return?TRUE;

}

//

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

//

/? Finalidad: ?Procesar información desde la ventana principal.

//

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

//?WM_PAINT -?Pintar la ventana principal

/ /?WM_DESTROY -?Enviar mensaje de salida y regresar

//

/

LRESULT?CALLBACK?WndProc(HWND?hWnd,?UINT?message, ?WPARAM?wParam,?LPARAM?lParam)

{

int?wmId,?wmEvent;

PAINTSTRUCT?ps;

HDC ?hdc;

cambiar?(mensaje)

{

caso?WM_COMMAND:

wmId=?LOWORD( wParam);

wmEvent?=?HIWORD(wParam);

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

switch?(wmId)

{

caso?IDM_ABOUT:

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

descanso;

caso?IDM_EXIT :

DestroyWindow(hWnd);

break;

predeterminado:

return?DefWindowProc(hWnd,?message,?wParam, ? lParam);

}

break;

case?WM_PAINT:

hdc?=?BeginPaint(hWnd,? &ps) ;

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

EndPaint(hWnd,? &ps);

break;

caso?WM_DESTROY:

PostQuitMessage(0);

descanso;

valor predeterminado:

retorno?DefWindowProc( hWnd , ?message,?wParam,?lParam);

}

return?

}

/?Mensaje sobre "box handler.

INT_PTR?CALLBACK?About(HWND?hDlg,?UINT?message,?WPARAM?wParam,?LPARAM?lParam)

{

UNREFERENCED_PARAMETER(lParam );

cambiar?(mensaje)

{

caso?WM_INITDIALOG:

retorno?(INT_PTR)TRUE;

case?WM_COMMAND:

if?IDCANCEL)

{

EndDialog(hDlg,?LOWORD(wParam));

retorno?(INT_PTR)VERDADERO;

}

descanso;

}

retorno?(INT_PTR)FALSO; p>

}