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出错的原因。 展开
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出错的原因。 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询