Problemas al abrir un dialogo modal

sandra
23 de Julio del 2004
Hola, vereis tengo un problemilla; He creado un dialogo modal, y quiero que al pulsar sobre una linea de un menu (como los tipicos de arriba de Archivo, Edicion...) pues me aparezca este dialogo; Lo he hecho muchas veces sin ningun problema; Escribiendo la funcion en la funcion C.....View, o en CMainFrame; Ahora bien, yo quiero escribirla en una clase que he creado yo derivada de CFormView, pero al crear la funcion e implementarla como siempre, luego no se me activa el texto que al pulsarlo me sale la ventana; Y por que no puedo hacerlo como siempre??? porque me da un error:

cannot convert parameter 1 from 'class CMainFrame *const ' to 'class CMiFuncion *'

Por que no se me activa para llamar a la ventana????? Es que necesito otra funcion????? Gracias, y si se os ocurre lo ke sea decirmelo;

void CMiFuncion::OnInsertartexto()
{
CInsertarTexto DlgTexto(this);
DlgTexto.DoModal();
}

Asi es como llamo para que salga el dialogo; Y no se me activa lo que esta asociado a esta funcion

ana
23 de Julio del 2004

Creo que el problema está en el parámetro "this" que le estás pasando a la función. Al usar este parámetro desde tu clase, lo que estás pasando es exactamente eso, la dirección de CMiFuncion mientras que espera algo de tipo CMainFrame .

Tienes que usar el constructor de tu clase para recibir el puntero de tu clase principal

//declárate en tu clase
//CTuclaseView es el nombre de tu clase principal.

CTuclaseView *m_pvp;

CMiFuncion ::CMiFuncion (CWnd* pParent /*=NULL*/)

{
m_pvp = (CTuclaseView *) pParent;

}

void CMiFuncion::OnInsertartexto()
{
CInsertarTexto DlgTexto(m_pvp);
DlgTexto.DoModal();
}


El objeto a tu clase lo tienes que hacer en CTuclaseView, pasándole, ahora sí, el puntero this.