Código
#include <windows.h> #include <sstream> using namespace std; /* La función ProcedimientoVentana() es necesaria porque es la encargada de recibir los eventos (movimientos del ratón, tecla, clics a un botón, etc). En este caso, solo monitorea el momento el que el usuario decide cerrar la ventana para descargar la aplicación de memoria */ HWND textbox; HWND Etiqueta; HWND hCTexto; void ventana_principal(HWND); void ventana_registroNuevo(HWND); void ventana_nueva(HWND hwnd); //void boton1; LRESULT CALLBACK ProcedimientoVentana(HWND hwnd, UINT mensaje, WPARAM wParam, LPARAM lParam) { switch (mensaje) { case WM_DESTROY:{ //salir de la aplicacion //MessageBox(hwnd, "¡Adiós mundo cruel!", "Cerrando...", MB_ICONERROR | MB_OK); PostQuitMessage (0);//Manda WM_QUIT a la cola de mensajes que hará //que el programa salga del bucle de mensajes return 0; break; } /*case WM_COMAND:{ switch(wParam){ case } break; }*/ case WM_CREATE: { ventana_principal(hwnd); } case WM_COMMAND: //Llamadas a funciones de cada boton { switch(LOWORD(wParam)) { case 2: { system ("cls"); ventana_registroNuevo( hwnd); break; } case 3: { //ventana_nueva(hwnd); //MessageBox(hwnd,"elemento","ESTA ES LA FUNCION RESTA",MB_OK);//CAJA DE TEXTO TITULO DE LA VENTANA E INTRUCCION DENTRO break; } case 4: { MessageBox(hwnd,"elemento","ESTA ES LA FUNCION RESTA",MB_OK);//CAJA DE TEXTO TITULO DE LA VENTANA E INTRUCCION DENTRO break; } case 5: { ShowWindow(hwnd, SW_SHOWDEFAULT); MessageBox(hwnd,"elemento","Eborro pantallaA",MB_OK);//CAJA DE TEXTO TITULO DE LA VENTANA E INTRUCCION DENTRO break; } case 6: //salir de la aplicacion { //MessageBox(hwnd, "¡Adiós !", "Cerrando...", MB_ICONERROR | MB_OK); PostQuitMessage (0);//Manda WM_QUIT a la cola de mensajes que hará //que el programa salga del bucle de mensajes return 0; } } } /*case WM_LBUTTONUP: { int xPos = LOWORD(lParam); int yPos = HIWORD(lParam); ostringstream os; os << "Hizo clic con el botón izquierdo"; if (wParam == MK_CONTROL) os << " mientras oprimía la tecla CONTROL"; else if (wParam == MK_SHIFT) os << " mientras oprimía la tecla SHIFT"; os << "\n\nCoordenadas: " << xPos << ", " << yPos; MessageBox(hwnd, os.str().c_str(), "Clic!", MB_ICONINFORMATION | MB_OK); break; }*/ } return DefWindowProc (hwnd, mensaje, wParam, lParam); } /* Esta cadena se ocupa para la clase de ventana y la función CreateWindowEx() se refieran a un mismo nombre */ char szNombreAplicacion[] = "Ejercicio2"; int WINAPI WinMain(HINSTANCE hInstancia, HINSTANCE hInstanciaPrev, LPSTR lpLineaCmd, int nEstadoVentana) { //Los 4 pasos para crear una ventana... //1. Establecer los 12 campos de la "clase de ventana" WNDCLASSEX ventana; ventana.cbSize = sizeof(WNDCLASSEX); ventana.style = CS_HREDRAW | CS_VREDRAW; ventana.lpfnWndProc = ProcedimientoVentana; //recibe y maneja los eventos de la ventana como clics movimientos cierre de ventana etc. con punteros ventana.cbClsExtra = 0; ventana.cbWndExtra = 0; ventana.hInstance = hInstancia; ventana.hIcon = LoadIcon (NULL, IDI_APPLICATION); ventana.hCursor = LoadCursor (NULL, IDC_ARROW); ventana.hbrBackground = (HBRUSH) (COLOR_WINDOWTEXT+8);//CreateSolidBrush( RGB(0xa0, 0x60, 0xf8) ); ventana.lpszMenuName = NULL; ventana.lpszClassName = szNombreAplicacion;//nombre de la clase de ventana ventana.hIconSm = LoadIcon (NULL, IDI_APPLICATION); //2. Dar de alta en el sistema a la "clase de ventana" if( !RegisterClassEx(&ventana) ) { MessageBox(NULL, "No fue posible dar de alta a la ventana, abortando ejecución", "¡Error!", MB_ICONEXCLAMATION | MB_OK); return FALSE; } //3. Crear la ventana en base a la "clase de ventana" anteriormente registrada HWND hwnd; hwnd = CreateWindowEx( 1, //dwExEstilo szNombreAplicacion, //Nombre de clase de la ventana a la que pertenece "Tienda de videos", //Título de la ventana //variables que permiten editar intefaz con usiario habilitando o desabilitando botones WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU , //poner | despues de cada opcion y coma al final //WS_THICKFRAME | // WS_MINIMIZEBOX | //WS_MAXIMIZEBOX //WS_OVERLAPPEDWINDOW, //Tipo de ventana es igual a dwEstilo CW_USEDEFAULT, //Posición de la ventana en pantalla en "x" CW_USEDEFAULT, //Posición de la ventana en pantalla en "y" 500, //Ancho 450, //Alto HWND_DESKTOP, NULL, hInstancia, NULL); if(hwnd == NULL) { MessageBox(NULL, "Error al crear la ventana, abortando ejecución", "¡Error!", MB_ICONEXCLAMATION | MB_OK); return FALSE; } //4. Mostrar la ventana en pantalla ShowWindow(hwnd, SW_SHOWDEFAULT); //Necesario para manipular los mensajes o eventos de la ventana MSG mensaje; while(GetMessage(&mensaje, 0, 0, 0) > 0) //bucle de mensajes para cola de mensajes entrantes { TranslateMessage(&mensaje); DispatchMessage(&mensaje); } return mensaje.wParam; } void ventana_principal(HWND hwnd)//se crea ventana principal { //MessageBox(hwnd, "Se creó la ventana", "Ejemplo",MB_ICONINFORMATION | MB_OK); Etiqueta = CreateWindowEx(0, "STATIC", "MENU PRINCIPAL", WS_CHILD | WS_VISIBLE, 180,//posicion en x 200,//posicion en y 150,//ancho 30,//alto hwnd, NULL, 0,0 ); /*textbox= CreateWindow("edit", " Menu principal", //nombre de la ventana WS_BORDER | WS_CHILD| WS_VISIBLE, 120,//posicion en x 180,//posicion en y 115,//ancho 20,//alto hwnd, NULL,NULL,NULL);*/ CreateWindow("BUTTON", "Registro Nuevo", WS_VISIBLE//VIsIBILIDAD DEL OBJETO |WS_CHILD| WS_BORDER, //MARGEN AL TEXTO 90, //x 240,//y 130,//ancho 30,//alto hwnd, (HMENU)2,NULL,NULL ); CreateWindow("BUTTON", "Buscar pelicula", WS_VISIBLE//VIsIBILIDAD DEL OBJETO |WS_CHILD| WS_BORDER, 240, //x 240,//y 130,//ancho 30,//alto hwnd, (HMENU)3,NULL,NULL ); CreateWindow("BUTTON", "Editar Registro", WS_VISIBLE//VIsIBILIDAD DEL OBJETO |WS_CHILD| WS_BORDER, 90, //x 290,//y 130,//ancho 30,//alto hwnd, (HMENU)4,NULL,NULL ); CreateWindow("BUTTON", "Eliminar Registro", WS_VISIBLE//VIsIBILIDAD DEL OBJETO |WS_CHILD| WS_BORDER, 240, //x 290,//y 130,//ancho 30,//alto hwnd, (HMENU)5,NULL,NULL ); CreateWindow("BUTTON",//boton salir "Salir", WS_VISIBLE//VIsIBILIDAD DEL OBJETO |WS_CHILD| WS_BORDER, 180, //x 340,//y 110,//ancho 30,//alto hwnd, (HMENU)6,NULL,NULL ); } void ventana_registroNuevo(HWND hwnd)//se crea ventana para un registro nuevo { //MessageBox(hwnd, "Se creó la ventana", "Ejemplo",MB_ICONINFORMATION | MB_OK); Etiqueta = CreateWindowEx(0, "STATIC", "REGISTRO NUEVO", WS_CHILD | WS_VISIBLE, 170,//posicion en x 40,//posicion en y 150,//ancho 30,//alto hwnd, NULL, 0,0 ); Etiqueta = CreateWindowEx(0, "STATIC", "NOMBRE", WS_CHILD | WS_VISIBLE, 40,//posicion en x 80,//posicion en y 70,//ancho 30,//alto hwnd, NULL, 0,0 ); hCTexto = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "", WS_CHILD | WS_VISIBLE | ES_AUTOHSCROLL, 120, 80, 270, 25, hwnd, NULL, NULL, NULL); Etiqueta = CreateWindowEx(0, "STATIC", "DIRECTOR", WS_CHILD | WS_VISIBLE, 40,//posicion en x 120,//posicion en y 150,//ancho 30,//alto hwnd, NULL, 0,0 ); Etiqueta = CreateWindowEx(0, "STATIC", "FECHA DE LANZAMIENTO", WS_CHILD | WS_VISIBLE, 40,//posicion en x 160,//posicion en y 150,//ancho 30,//alto hwnd, NULL, 0,0 ); Etiqueta = CreateWindowEx(0, "STATIC", "PROTAGONISTA", WS_CHILD | WS_VISIBLE, 40,//posicion en x 200,//posicion en y 150,//ancho 30,//alto hwnd, NULL, 0,0 ); /*textbox= CreateWindow("edit", " Menu principal", //nombre de la ventana WS_BORDER | WS_CHILD| WS_VISIBLE, 120,//posicion en x 180,//posicion en y 115,//ancho 20,//alto hwnd, NULL,NULL,NULL);*/ CreateWindow("BUTTON",//boton salir "GUARDAR", WS_VISIBLE//VIsIBILIDAD DEL OBJETO |WS_CHILD| WS_BORDER, 120, //x 340,//y 110,//ancho 30,//alto hwnd, (HMENU)7,NULL,NULL ); } /*void ventana_nueva(HWND hwnd) { LRESULT CALLBACK ProcedimientoVentana(HWND hwnd, UINT mensaje, WPARAM wParam, LPARAM lParam) { CreateWindow("BUTTON",//boton salir "GUARDAR", WS_VISIBLE//VIsIBILIDAD DEL OBJETO |WS_CHILD| WS_BORDER, 120, //x 340,//y 110,//ancho 30,//alto hwnd, (HMENU)7,NULL,NULL ); } }*/