Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1040040
  • 博文数量: 264
  • 博客积分: 6005
  • 博客等级: 大校
  • 技术积分: 2798
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-08 20:15
文章分类

全部博文(264)

文章存档

2011年(42)

2010年(213)

2009年(4)

2008年(2)

2007年(3)

分类:

2010-06-12 23:54:09

在子窗口想获得父窗口中控件的指针。
方法1
通过 CWnd *pParent = GetParent();
然后 CListBox *pEarly = (CListBox*)pParent->GetDlgItem(IDC_EARLY); //强制把CWnd转换成CListBox, GetDlgItem返回CWnd
这样就获得了父窗口CListBox的指针。
方法2(问题)

在父窗口通过DDX_control已经给空间分配了变量,比如m_Control.
那在子窗口如何获得这个变量呢?
我通过CWnd *pParent = GetParent之后,不能用pParent->m_Control操作!   

在子窗口类中,包含父窗口类的头文件.
CXXXDlg *pParent = (CXXXDlg *)GetParent();

不过这样做不是很好.


可以通过发送消息的办法.

在父窗口中声明一个消息 该消息来做你要实现的动作 即更改变量
一般成员变量是private的 最好不要在类外面改变它
而消息相当于一个成员函数 当然安全多了。
在父类头文件中声明:
const int WM_MYMESSGE=WM_USER+10001;
afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);
cpp中:
ON_MESSAGE(WM_MYMESSGE, OnMyMessage)
及函数的实现。
这样就可以在子类中调用了。

m_Control是一个类变量,你用pParent->m_Control肯定不行,
vc通过某种方法使m_Control和控件相关联。

你需要得到类实例

阅读(1365) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~