回 帖 发 新 帖 刷新版面

主题:[讨论]如何在子窗口中使用父窗口的变量

我建立了一个对话框应用程序,在上面创建了一个按钮,当单击按钮时会弹出新的一个窗口。
void MainDlg::OnButton() 
{
    // TODO: Add your control notification handler code here
    ChildDlg m_dlg;
    m_dlg.DoModal();
}

现在我在父窗口类中增加了一个public成员变量CString m_str,然后在构造函数中给它做了初始化。我想在子窗口的OnInitDialog()中获得父窗口成员str的值,我现在这样写:

CWnd *pParentWnd = GetParent();
pParentWnd->m_str;

但不对,提示说m_str不是CWnd的成员。应该怎么做?

回复列表 (共5个回复)

沙发

你要转换为你父窗口的类型
((CParentWnd*)pParentWnd)->m_str;

板凳


在派生类定义中定义一个指向基类的指针  MainDlg * m_pMainDlg;

子窗口的OnInitDialog()中写:
m_pMainDlg = (MainDlg *)GetParent();
m_pMainDlg->m_str = "this is test";

3 楼

GetParent(); 中能得到窗口句柄

4 楼

GetOwner

5 楼


将语句:CWnd *pParentWnd = GetParent();
改为:CWnd *pParentWnd = (CParentWnd*)GetParent();
就可以了!

我来回复

您尚未登录,请登录后再回复。点此登录或注册