• Lunes 29 de Abril de 2024, 14:16

Autor Tema:  Dialogo De Configuración En Una Aplicación  (Leído 2611 veces)

drd

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Dialogo De Configuración En Una Aplicación
« en: Miércoles 24 de Octubre de 2007, 15:05 »
0
Hola, hace tiempo que no escribía por aquí, aunque me me habéis sido de bastante ayuda, estoy programando una aplicación Dialog-based en visual C++ con el visual studio 2005 y usando MFCs.

Bien, vamos al grano, estoy intentando hacer que al pulsar un botón del diálogo principal salga otro diálogo que usaré para configurar las propiedades de una cámara a la que accedo.

El problema es que no puedo pasar los cambios que hago en configuración a los objetos del diálogo principal. He visto navegando y en tutoriales que se puede hacer una especie de copia de las variables en el diálogo principal y actualizarlas cuando cierre el diálogo de configuración (que será modal en un principio).

Sin embargo yo me preguntaba si puedo sacar un puntero a las cosas de la clase padre y pasárselo al diálogo configuración para así actualizarlo directamente sin necesidad de hacer otras variables en la clase principal de diálogo, ya que muchas de ellas tendrán que usarse en funciones para enviar a la cámara sus parámetros.

No si me explico bien y si me podréis ayudar, pero muchas gracias de antemano.

SteelX

  • Miembro MUY activo
  • ***
  • Mensajes: 218
    • Ver Perfil
Re: Dialogo De Configuración En Una Aplicación
« Respuesta #1 en: Miércoles 24 de Octubre de 2007, 16:53 »
0
DRD lo que intentas hacer es copiar datos de  un dialogo a otro. Cuando uno crea una clase derivada de CDialog no implica que no tenga un comportamiento de una clase normal. Es decir dentro de ellas podrías hacer una función para llenar datos, algo como

Código: Text
  1.  
  2.  
  3. class myDialogo1: public CDialog
  4. {
  5.  
  6. myDialogo1():CDialog(......)
  7. {
  8. }
  9. ~myDialogo1()
  10.  
  11. {
  12. }
  13.  
  14. public:
  15.  
  16. void llenar_datos(Tipo var1, Tipo var2)
  17. {
  18.   m_var1 = var1;
  19.  
  20.    m_var2 = var2;
  21. }
  22.  
  23. private:
  24.  
  25. Tipo m_var1;
  26. Tipo m_var2;
  27.  
  28. };//
  29.  
  30.  
  31. //dentro de tu otro dialogo
  32.  
  33.  
  34. maindialog::funciondeMainDialogo()
  35. {
  36.   m_myDialogo1.llenar_datos(dato1,dato2);
  37.   }
  38.  
  39.  
  40.  

pues tambien puedes retornar valores del  dialogo principal de  variables miembros

y pasarselas alnuevo dialogo
Inside the code

drd

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Dialogo De Configuración En Una Aplicación
« Respuesta #2 en: Jueves 25 de Octubre de 2007, 08:47 »
0
Muchas gracias por responder tan rápido, SteelX

Yo pensaba en usar un puntero al diálogo y objetos que llama ese mismo diálogo (son varias cosas, para ver imágenes, para controlar algún proceso de visión artificial, pero sobre todo un objeto para comunicarse con la cámara y controlarla, que declaramos en ese diálogo. Querría hacer algo así como:

DialogoPrincipal->ObjetoControlador.funciónCambiada();

¿es posible? Porque llamando directamente a ese objeto no me funciona, aunque le tenga de acceso público.

Con lo fácil que era poner todo en la misma ventana, aunque quede más feo.

Gracias por tu ayuda.

SteelX

  • Miembro MUY activo
  • ***
  • Mensajes: 218
    • Ver Perfil
Re: Dialogo De Configuración En Una Aplicación
« Respuesta #3 en: Jueves 25 de Octubre de 2007, 16:00 »
0
ObjetoControlador es una variable miembro de DialogoPrincipal??.



si es así no veo cómo no funcionaría siempre y cuando no esté declarada publica o el objeto tiene algún tipo de inicialización.
Inside the code

drd

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Dialogo De Configuración En Una Aplicación
« Respuesta #4 en: Viernes 26 de Octubre de 2007, 09:44 »
0
Sí, es una variable miembro del diálogo, siendo otro objeto, pero no entiendo bien tú frase. Quieres decir que si es pública eso no funcionará o si el objeto al que quiero acceder (y que es miembro del diálogo principal) tiene inicialización tampoco funciona.

De todas maneras ayer estuve probando eso y no me funcionaba así que probaré de otra manera, usando algún  método o algo.

SteelX

  • Miembro MUY activo
  • ***
  • Mensajes: 218
    • Ver Perfil
Re: Dialogo De Configuración En Una Aplicación
« Respuesta #5 en: Viernes 26 de Octubre de 2007, 17:22 »
0
Es decir que no funcionaría si no está declara publica o depronto tiene al´gun tipo de inicialización,  en tu caso de dialogo modal entonces el asume que el padre es la clase donde lo declaraste.

sino deberas inicializar el objeto y debe ser en el evento WM_INITDIALOG ya que si se hace en el WM_CREATE la ventana padre aun no ha sido creada y va ocasionar errores de memoria.


puedes postear un fragmento de lo que estas haciendo??
 B)
Inside the code

drd

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Dialogo De Configuración En Una Aplicación
« Respuesta #6 en: Lunes 29 de Octubre de 2007, 10:33 »
0
Bueno, el problema es que no me deja iniciar el diálogo modal de configuración desde el diálogo principal de la aplicación, a ver si ahora lo miro un poco y lo resuelvo. De todas maneras desde la clase del diálogo de configuración no me deja acceder a la función nueva que he hecho para intercambiar los datos. No sé porqué pero no me deja acceder al objeto diálogo principal, que está definido en la clase CMyApp, que es la que suelta el diálogo. Y la verdad no sé porqué será, uno que está un poco verde en programar.

drd

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Dialogo De Configuración En Una Aplicación
« Respuesta #7 en: Martes 6 de Noviembre de 2007, 13:25 »
0
Bueno, solucioné en gran parte lo que decía de conseguir el puntero del diálogo padre, gracias a una web, que es un pequeño cursillo sobre mfc, para visual 6.0, pero que se pueden apañar cosas.(Al enviar he visto que no puedo incluir enlaces, pero se encuentra fácil por google)

Sin embargo me da un error que no tengo ni idea de que es, al dar al ok del dialogo para volver al principal se me queda un rato colgado y luego sale una ventana de mensaje en la que pone

El documento XML debe tener un elemento de nivel superior.

Y me deja a cuadros, porque yo no uso nada de eso (al menos que sea consciente). Compila bien, y pasa los datos de uno a otro, pero cuando lo ejecuto de seguido me da eso ¿alguna idea? "Googleando" encuentro cosas que se refieren a programación web, bases de datos y similares, nada que ver con diálogos.

drd

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Dialogo De Configuración En Una Aplicación
« Respuesta #8 en: Martes 6 de Noviembre de 2007, 13:56 »
0
Solucionado, era una tontería mía al hacer la prueba, que sólo estaba jugando con los diálogos y no enchufaba la cámara, entonces era incapaz de seguir y por eso daba ese error (deben usar algo de XML ellos) Perdón por las molestias.