Cómo crear un formulario usando programación C++
1. Código C++ para crear un formulario, el código es el siguiente: #include HWND HMainwnd = NULL; // Manija del formulario int run() // Función de bucle de mensajes bool InitWindowsApp(HINSTANCEstanceHandle, int) show); //Función de inicialización de formulario LRESULT CALLBACK WndProc(HWND wnd, UINT msg, WPARAM wp, LPARAM lp); //Función de devolución de llamada de procesamiento de formulario //función principal int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd ) { if(!InitWindowsApp(hInstance, nShowCmd))// Determinar si la inicialización del formulario fue exitosa { return 0; } run(); // Bucle para recibir mensajes después de que la inicialización sea exitosa return } bool InitWindowsApp(HINSTANCE stanceHandle, int show) { WNDCLASS wc; // Estructura de clase de formulario wc.style = CS_HREDRAW | CS_VREDRAW; // Estilo de formulario wc.lpfnWndProc = WndProc // Función de procesamiento de formulario wc.cbClsExtra = 0; wc .cbWndExtra = 0; // Si la instancia del formulario está extendida wc.hInstance = stanceHandle; // Identificador del formulario wc.hIcon = LoadIcon(0, IDI_APPLICATION); // Icono del formulario wc.hCursor = LoadCursor(NULL, IDC_ARROW); // Estilo del mouse del formulario wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //Color de fondo del formulario wc.lpszMenuName = NULL; //Menú del formulario wc.lpszClassName = "BaseWndClass" // Nombre de la clase del formulario if(!RegisterClass( &wc)) //Determine si el formulario se registró correctamente { MessageBox(0, "Error de registro", 0, 0 return false } //Crea el formulario HMainwnd = CreateWindow("BaseWndClass", // Nombre de clase del formulario "); MyFrom", //Nombre del título del formulario WS_OVERLAPPEDWINDOW, //Estilo del formulario CW_USEDEFAULT, CW_USEDEFAULT, //Coordenadas del formulario CW_USEDEFAULT, CW_USEDEFAULT, //Coordenadas del formulario NULL, //Formulario principal del formulario NULL, //Submenú del formulario eventHandle, //Formulario handle NULL); // Si la función tiene éxito, el valor de retorno es el identificador de la nueva ventana: si la función falla, el valor de retorno es NULL if(HMainwnd == 0) // Juicio sobre si el formulario se creó correctamente { MessageBox (0, "Error al crear el formulario", 0, 0); return false } ShowWindow(HMainwnd, SW_SHOW);
nwnd); //Dibuja el formulario; return true; } LRESULT CALLBACK WndProc(HWND wnd, UINT msg, WPARAM wp, LPARAM lp) { switch(msg)//Determina el tipo de mensaje { case WM_LBUTTONDOWN: //Clic izquierdo en MessageBox (0, "Hello World", "myMbox", MB_OK); return 0; case WM_KEYDOWN: //Mensaje del teclado if(wp == VK_ESCAPE) //Tecla ESC DestroyWindow(HMainwnd); //Destruye la ventana return 0; WM_DESTROY: PostQuitMessage(0); //Terminar el mensaje de retorno 0; } return DefWindowProc(wnd, msg, wp, lp); //Volver a la función de mensaje predeterminada} int run() { MSG msg = {0}; estructura BOOL bRet = 1; //Obtener el mensaje while( (bRet = GetMessage(&msg, 0, 0, 0)) != 0)// Bucle de mensajes { if(bRet == -1)//Determinar si el mensaje se recibe Error { MessageBox(0, "No se pudo aceptar el mensaje", 0, 0); break } else { TranslateMessage(&msg); //Convertir mensaje en mensaje de caracteres DispatchMessage(&msg); retorno (int)msg.wParam;