Hola, tengo un problema con un código de interfaz gráfica que estoy creando en el cual no he podido crear paginas hijas o limpiar la pantalla para poner unas nuevas opciones, por favor alguien podría decirme como hacerlo gracias. Este es mi código:
Código (cpp) [Seleccionar]
#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
);
}
}*/