VC++ MFC 子窗口怎么访问父窗口的控件对象
在父窗口中有一个CTreeCtrl(m_Tree)控件,有一个子窗口CDlgChild(m_DlgChild)//在父窗口的OnCreate方法中,创建子窗口CRectr...
在父窗口中有一个 CTreeCtrl (m_Tree) 控件,有一个 子窗口 CDlgChild (m_DlgChild)
//在 父窗口的 OnCreate 方法中,创建 子窗口
CRect rect_parent;
GetWindowRect(&rect_parent);
m_DlgChild.Create(IDD_Dlg_Backpic); //关联对话框资源
m_DlgChild.MoveWindow(255, 10, (rect_parent.Width() - 260), rect_parent.Height() - 20);
m_DlgChild.ShowWindow(SW_SHOW);
//在子窗口的某个按钮单击事件中,要访问 父窗口的 m_Tree 控件,得到其当前选中的文本。
CString str;
str = GetParent()->m_Tree.GetCurTest(); //GetCurTest()是自定义方法
问题来了,
错误 error C2039: “m_Tree”: 不是“CWnd”的成员
在 GetParent() 前面加了 强制类型转换(转为父窗口类型)也不行,用
GetParentOwner() 方法也不行,一样的错误。
求大侠帮忙…… 展开
//在 父窗口的 OnCreate 方法中,创建 子窗口
CRect rect_parent;
GetWindowRect(&rect_parent);
m_DlgChild.Create(IDD_Dlg_Backpic); //关联对话框资源
m_DlgChild.MoveWindow(255, 10, (rect_parent.Width() - 260), rect_parent.Height() - 20);
m_DlgChild.ShowWindow(SW_SHOW);
//在子窗口的某个按钮单击事件中,要访问 父窗口的 m_Tree 控件,得到其当前选中的文本。
CString str;
str = GetParent()->m_Tree.GetCurTest(); //GetCurTest()是自定义方法
问题来了,
错误 error C2039: “m_Tree”: 不是“CWnd”的成员
在 GetParent() 前面加了 强制类型转换(转为父窗口类型)也不行,用
GetParentOwner() 方法也不行,一样的错误。
求大侠帮忙…… 展开
1个回答
展开全部
你这种用法,就要保证m_Tree在父窗口是public的,否则其他类中无法访问的,protected属性另当别论,此处无需讨论;一般情况下不推荐直接使用public属性定义成员变量,所以你给一个public属性的接口就好了:
// 定义在父窗口中
public:
void* get_m_tree() { return m_Tree; }; // 不要用void*,换成m_Tree的类型
// 或者最直接的
CString get_selected_string() { return m_Tree.GetCurTest(); };
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询