CWnd派生类里m_hWnd为什么总是为0

如题,我现新建一个对话框testDlg工程后,直接写了一个派生类:classpaisheng:publicCWnd,(由MFC自动添加,用2005添加,动态创建之类的宏都... 如题,我现新建一个对话框testDlg工程后,直接写了一个派生类:
class paisheng : public CWnd,(由MFC自动添加,用2005添加,动态创建之类的宏都自动添加了),在CtestDlg中添加Public的成员变量paisheng NewWnd,然后直接调试运行,跟踪主对话框中的OnintialDlg函数,在超始处添加:this->m_hWnd;和this->NewWnd.m_hWnd;
分别查看this->m_hWnd和this和this->NewWnd.m_hWnd断点调试却发现:前者不为0,后者数值一直为0。请教一下为什么。
据我查询资料:m_hWnd是在CWnd类中的Create函数中实现初始化的,由CWnd类自动调用。那么我定义的CWnd派生类在构造时也应当先调用CWnd类的相关函数呀。和主对话框的Dlg是相同的呀,为什么自定义的类中m_hWnd却为0?问题出在哪里呀。

附:我这样做的用途是:我在实际工程应用中定义了一个CWnd派生类,想通过::Postmessage(因为在线程中传递,因此不能用CWnd的成员函数,要用API)传递消息,但是获得的句柄,即:m_hWnd总是为0,消息根本传不到预想的类中。事实证明,主对话框能正常接收消息,但自定义的CWnd派生类却没法接收,应该是m_hWnd出错的原因。
展开
 我来答
vbtraz
推荐于2016-12-02 · TA获得超过5532个赞
知道大有可为答主
回答量:4152
采纳率:0%
帮助的人:4453万
展开全部
构造和Create是两回事。

构造是这个类对象的产生。 类对象只是用来保存窗口信息的, 对系统而言, 类对象并不是窗口, 类对象Create才真正产生窗口。 如果你没在某个地方调用这个Create , 只是声明个类对象是没有窗口的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式