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() 方法也不行,一样的错误。
求大侠帮忙……
展开
 我来答
HarryNR
推荐于2016-06-02 · TA获得超过929个赞
知道小有建树答主
回答量:1013
采纳率:33%
帮助的人:794万
展开全部

你这种用法,就要保证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(); };
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式