CWnd上创建Edit时很蹊跷的有关问题
CWnd上创建Edit时很蹊跷的问题
目标是在CWnd派生类上创建Edit时很蹊跷的问题.:
而CTEST派生自CStatic等基类时不会出错。或者在OnPaint()中创建Edit没有问题。很蹊跷,为什么呢?
------解决思路----------------------
PreSubclassWindow 时 CWnd 还没有被创建, 父窗口指针为空
在 WM_CREATE 响应消息中创建
------解决思路----------------------
+1
为CTEST添加WM_CREATE 消息和消息响应函数OnCreate,在这里面创建edit窗口
------解决思路----------------------
在OnCreate里面Create就行了。
目标是在CWnd派生类上创建Edit时很蹊跷的问题.:
class CTEST : public CWnd
{
DECLARE_DYNAMIC(CTEST)
public:
CTEST();
virtual ~CTEST();
CEdit m_edit;
protected:
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnPaint();
protected:
virtual void PreSubclassWindow();
};
void CTEST::PreSubclassWindow()
{
// TODO: 在此添加专用代码和/或调用基类
m_edit.Create(WS_CHILD, CRect(0,40,10,50),this,1001); //这里出错!
CWnd::PreSubclassWindow();
}
而CTEST派生自CStatic等基类时不会出错。或者在OnPaint()中创建Edit没有问题。很蹊跷,为什么呢?
------解决思路----------------------
PreSubclassWindow 时 CWnd 还没有被创建, 父窗口指针为空
在 WM_CREATE 响应消息中创建
------解决思路----------------------
+1
为CTEST添加WM_CREATE 消息和消息响应函数OnCreate,在这里面创建edit窗口
------解决思路----------------------
在OnCreate里面Create就行了。