分类:
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和控件相关联。
你需要得到类实例