C/Visual C - ENLAZAR UN DIALOG A UNA OPCION DE UN MENU

 
Vista:

ENLAZAR UN DIALOG A UNA OPCION DE UN MENU

Publicado por Raúl (2 intervenciones) el 04/01/2007 00:01:21
Hola, soy estudiante de Ingenieria Informatica,estoy dando programacion en C++ y tengo que hacer un trabajo de fin de curso en el cual tengo que investigar mucho,ya que cosas como el entorno grafico no lo damos este año.
Vereis mi problema es el siguiente, tengo un menu y un dialog, que debo hacer para que al pulsar en esa opcion del menu me aparezca el dialog elegido?
Muchas gracias de antemano.
Por cierto uso el Microsoft Visual C++,si les sirve de algo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ENLAZAR UN DIALOG A UNA OPCION DE UN MENU

Publicado por Nelek (816 intervenciones) el 04/01/2007 12:48:08
A ver...

Create un proyecto de Win32 (por ejemplo Test), dentro del editor de recursos, te creas un DialogBox, le das un identificador y creas (doble click en el editor de recursos con el dialogo abierto) una clase asociada al dialogo donde escribir el codigo que se ejecutara en el dialogo. P.Ej: ID_TESTDLG y CTestDlg.

Tambien en el editor de recursos, te creas tu opcion de menu, con su identificador. P.Ej: ID_ABRE_TEST

Luego aprieta CTRL+W y se te abrira un asistente, donde arriba a la izda esta el proyecto (Test), arriba a la derecha las clases (recomiendo CTestView), en el centro a la izquierda los IDs disponibles (ID_ABRE_TEST), centro derecha el tipo de mensaje (COMMAND), le das a "anyadir funcion", eliges un nombre para tu "evento" (p.ej: OnAbreTest), despues de aceptar ese "evento" debe de aparecer abajo en el listado de mensajes de la clase, si esta ahi... lo eliges y dale a "Editar codigo". Se abrira la clase elegida arriba, y tendras incluido ya partes de codigo automaticamente.

Aqui te pongo un ejemplo:

void CTestView::OnAbreTest()
{
// TODO: Add your control notification handler code here
int nResDlg;
CTestDlg dlgTest;
nResDlg=dlgTest.DoModal ();

if (nResDlg == IDOK)
AfxMessageBox ("Has cerrado el dialogo apretando a aceptar");

else
AfxMessageBox ("Cerraste el dialogo con escape, cancelar o la X");

}

En caso de tener que tomar datos y demas... eso ya lo declaras dentro del dialogo y lo guardas en variables dentro de la clase CTestDlg, donde el IDOK pones:
Variable_en_CTestView = dlgTest.Variable_en_CTestDlg;

Espero que te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ENLAZAR UN DIALOG A UNA OPCION DE UN MENU

Publicado por Raúl (2 intervenciones) el 04/01/2007 13:17:03
En el codigo que me has mandado donde pongo el nombre del nuevo dialog que quiero abrir?
Y otra cosa, eso de CTestView no me aparece, me sale CTestDlg

Si tienes messenger puedes agregarme y asi te comento mis fallos y posibles soluciones. Mi messenger: [email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ENLAZAR UN DIALOG A UNA OPCION DE UN MENU

Publicado por Nelek (816 intervenciones) el 05/01/2007 10:52:52
A ver, por partes

A ti te sale lo de CTestDlg pq estas intentando poner el codigo que te dije dentro del propio dialogo que quieres abrir. O porque te has creado un proyecto basado en dialogos. La descripcion que yo te di es para un proyecto SDI o MDI, que contiene por defecto una clase llamada CNombre_ProyectoView por eso el CTestView. Haz una cosa create de nuevo un proyecto y esta vez cambia el nombre por "myProject". Y el resto lo haces igual. La cosa deberia quedar...

void CmyProjectView::OnAbreTest()
{
// TODO: Add your control notification handler code here
int nResDlg;
CTestDlg dlgTest;
nResDlg=dlgTest.DoModal ();

if (nResDlg == IDOK)
AfxMessageBox ("Has cerrado el dialogo apretando a aceptar");

else
AfxMessageBox ("Cerraste el dialogo con escape, cancelar o la X");

}

el dialogo lo creas en el editor de recursos, bajo anyadir-> dialogo, le pones los botoncitos, campos de edicion y demas que quieras y con el boton derecho -> opciones le das la ID (o sea ID_TESTDLG) y luego haces un doble click en la ventana donde estas dibujando el dialogo. Se te abrira un asistente, AHI es donde tu le das el nombre a la clase del dialogo (o sea CTestDlg).

Lo del messenger lo siento, pero no suelo entrar casi, lo poco que paro por casa suele ser a descansar y no enciendo el ordenador casi, o si lo hago es para desconectar viendo alguna peli o jugando un rato.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar