子窗口调用父窗口控件问题

时间:2022-03-04 21:30:04
子窗口怎样调用调用父窗口中控件,例如,父窗口上有个listCTRl控件,子窗口类中函数要调用listctrl控件对象。怎样实现?谢谢!

14 个解决方案

#1


既然是子窗口调用,那就用GetParent()获得父窗口指针
如父窗口是CMyParent,则 CMyParent* pWnd = (CMyParent*)GetParent();
然后pWnd->GetDlgItem(/*控件ID*/);获得控件

#2


直接从父窗口传这个控件的指针给子窗口不就行了

#3


大家看看 急需解决这个问题!

#4


现在知道这个控件的变量,怎样解决?

#5


引用 4 楼 jokey514 的回复:
现在知道这个控件的变量,怎样解决?

按我2楼的方法不可以么

#6


修改子窗口类的构造函数,传递父窗口的指针就可以了

#7


无论什么方法,只要子窗口能取到父窗口控件的指针就可以操作了。

#8


CXXDlg *pDlg=(CXXDlg *)AfxGetMainWnd();
pDlg->m_listCTRl...;

#9


直接在子窗口中这样写就行了:

((CFatherDlg *)GetParent())->m_ListCtrl.Insert(....);

#10


建议还是通过发送消息来处理的好。
由子控件发送消息给父窗体,这样父窗体想怎么响应就怎么响应。
不要直接把数据传入到子窗体去实现,这样会增加各个控件代码的耦合,维护起来会比较麻烦的。

#11


引用 10 楼 xpbhere 的回复:
建议还是通过发送消息来处理的好。
由子控件发送消息给父窗体,这样父窗体想怎么响应就怎么响应。
不要直接把数据传入到子窗体去实现,这样会增加各个控件代码的耦合,维护起来会比较麻烦的。
有道理~

#12


回调函数啊,消息啊,都OK.10楼有道理

#13


GetParent()

#14


mark

#1


既然是子窗口调用,那就用GetParent()获得父窗口指针
如父窗口是CMyParent,则 CMyParent* pWnd = (CMyParent*)GetParent();
然后pWnd->GetDlgItem(/*控件ID*/);获得控件

#2


直接从父窗口传这个控件的指针给子窗口不就行了

#3


大家看看 急需解决这个问题!

#4


现在知道这个控件的变量,怎样解决?

#5


引用 4 楼 jokey514 的回复:
现在知道这个控件的变量,怎样解决?

按我2楼的方法不可以么

#6


修改子窗口类的构造函数,传递父窗口的指针就可以了

#7


无论什么方法,只要子窗口能取到父窗口控件的指针就可以操作了。

#8


CXXDlg *pDlg=(CXXDlg *)AfxGetMainWnd();
pDlg->m_listCTRl...;

#9


直接在子窗口中这样写就行了:

((CFatherDlg *)GetParent())->m_ListCtrl.Insert(....);

#10


建议还是通过发送消息来处理的好。
由子控件发送消息给父窗体,这样父窗体想怎么响应就怎么响应。
不要直接把数据传入到子窗体去实现,这样会增加各个控件代码的耦合,维护起来会比较麻烦的。

#11


引用 10 楼 xpbhere 的回复:
建议还是通过发送消息来处理的好。
由子控件发送消息给父窗体,这样父窗体想怎么响应就怎么响应。
不要直接把数据传入到子窗体去实现,这样会增加各个控件代码的耦合,维护起来会比较麻烦的。
有道理~

#12


回调函数啊,消息啊,都OK.10楼有道理

#13


GetParent()

#14


mark