Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:

Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro


Gerarquia de clases mediante ClassWizard

Aqui programadores en la plataforma Win32 con Visual C++ de Microsoft...

Moderador: latindeveloper

Gerarquia de clases mediante ClassWizard

Notapor johnny el Sab Sep 03, 2005 1:53 pm

Hola a todos

El problema que tengo es el siguiente:
Tengo una clase CDlgVer1 derivada de CDialog.

La pregunta seria:
Mediante el ClassWizard se puede derivar otra clase digamos CDlgVer2 teniendo como base la clase CDlgVer1 ó se tiene que hacer manualmente?

Agradesco de antemano que puedan responder a esta inquietud.

Atentamente Johnny
johnny
Usuario Activo
Usuario Activo
 
Mensajes: 47
Registrado: Lun Jun 21, 2004 4:02 pm
Ubicación: Arequipa-Perú

Re: Gerarquia de clases mediante ClassWizard

Notapor latindeveloper el Lun Sep 05, 2005 8:16 am

Ahí tuve problemas alguna vez. Pero lo solucioné de esta manera:

Por ejemplo yo tengo un dialogo llamado CNSDialog, que al principio lo cree con classwizard, Modifiqué el construcor de esta manera:

Código: Seleccionar todo
CNSDialog::CNSDialog(UINT nIDTemplate, CWnd *pParent/*= NULL*/) :
   CDialog (nIDTemplate, pParent), m_ldgID(nIDTemplate)
{

}


Y le agregué las funciones que necesitaba. Y eliminé el recurso relacionado con el dialogo y la linea

Código: Seleccionar todo
   enum { IDD = IDD_NSDIALOG};


Ahora para utilizar el dialogo simplemente hago como si fuera un CDialog comun y corriente, pero le pongo esto antes de la declaracion de la clase:

Código: Seleccionar todo
#define CDialog CNSDialog
class COtroDialogo : public CDialog , DataHelper 
{

}


Y classwizard no se dará cuenta y no tendras problemas con los mensajes y esas cosas.

Tu constructor sería de esta manera:

Código: Seleccionar todo
COtroDialogo::COtroDialogo(CWnd* pParent /*=NULL*/)
   : CDialog(COtroDialogo::IDD, pParent)
{

}
Imagen
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:29 pm
Ubicación: Peru

Re: Gerarquia de clases mediante ClassWizard

Notapor johnny el Mié Sep 07, 2005 3:45 pm

Aqui yo de nuevo

Gracias por la respuesta amigo Ivan.

Segun el ejemplo que expones, CNSDialog deriva de CDialog, y la clase COtroDialogo tambien deriva de CDialog. Se podria hacer que COtroDialogo derive de CNSDialog, es decir que su constructor seria:
Código: Seleccionar todo
COtroDialogo::COtroDialogo(CWnd* pParent /*=NULL*/)
   : CNSDialog(COtroDialogo::IDD, pParent)
{

}


Otra duda que tengo es sobre la instrucción "DataHelper", que es lo que hace... Es la primera vez que he oido ablar de ella.

Gracias por todo.

Atentamente Johnny
johnny
Usuario Activo
Usuario Activo
 
Mensajes: 47
Registrado: Lun Jun 21, 2004 4:02 pm
Ubicación: Arequipa-Perú

Re: Gerarquia de clases mediante ClassWizard

Notapor latindeveloper el Jue Sep 08, 2005 7:48 am

El classwizard se vuelve loco, por eso es que le pongo esta linea

Código: Seleccionar todo
#define CDialog CNSDialog


Todos los CDialog se reemplazan con CNSDialog , y asunto terminado.
Imagen
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:29 pm
Ubicación: Peru


Volver a Visual C++

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron