CWnd上创建Edit时很蹊跷的有关问题

CWnd上创建Edit时很蹊跷的问题
本帖最后由 evan369 于 2014-12-09 18:01:00 编辑
目标是在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 响应消息中创建

------解决思路----------------------
引用:
PreSubclassWindow 时 CWnd 还没有被创建, 父窗口指针为空
在 WM_CREATE 响应消息中创建

+1

为CTEST添加WM_CREATE 消息和消息响应函数OnCreate,在这里面创建edit窗口
------解决思路----------------------
在OnCreate里面Create就行了。