Cambiar Caption II

13/09/2003 - 21:27 por Demon | Informe spam
Hola de nuevo!!

Weno, parece ke nadie más puede ayudarme, así ke lo intentaré de nuevo, esta
vez con el código exacto.

Recordatorio: Intento cambiar dinámicamente el caption de una ventana de
diálogo desde dentro de una función. He intentado usar SetWindowText, pero
me genra un error de aserción.

La clase asociada al diálogo está definida de la siguiente forma:

class CMetalProp : public CDialog // Observad ke deriva de CDialog
{
// Construction
public:
CMetalProp(CWnd* pParent = NULL); // standard constructor

// Dialog Data
//{{AFX_DATA(CMetalProp)
enum { IDD = IDD_DMETALPROP };
CString m_Name;
double m_WorkFunction;
//}}AFX_DATA


// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMetalProp)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL

// Implementation
protected:

// Generated message map functions
//{{AFX_MSG(CMetalProp)
// NOTE: the ClassWizard will add member functions here
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};


Desde un gestor de eventos de la clase CView intento cambiar el caption
antes de mostar el diálogo kon DoModal, y es ahí donde se genera el error:

void CDeviceView::OnMaterialsAnode()
{
CDeviceDoc *pdoc=GetDocument();
CMetalProp cmp;
CString str;
cmp.SetWindowText(" Anode"); <-- ERROR: ASSERTION FAILURE
cmp.m_Name=pdoc->m_Device.m_Anode.m_Name;
cmp.m_WorkFunction=pdoc->m_Device.m_Anode.m_WorkFunction;
cmp.DoModal();
pdoc->m_Device.m_Anode.m_Name=cmp.m_Name;
pdoc->m_Device.m_Anode.m_WorkFunction=cmp.m_WorkFunction;

}

Al parecer no rekonoce a cmp como CWnd, aunke deriva de CDialog, ke a su vez
deriva de CWnd.
Alguna sugerencia?

Gracias

Demon.
 

Leer las respuestas

#1 christian
14/09/2003 - 00:02 | Informe spam
promero con el class wizard
define
OnCreate o InitDialog

ahi dentro haz lo siguiente:

CString tutexto;
o
char* tutexto = "Hola";

SetWindowText(tutexto);
o
::SetWindowText(m_hWnd,tutexto);

Preguntas similares