C++线程里面为什么不能用mfc包装的MessageBox函数?
1个回答
展开全部
有分吗? 好像没有,但江湖救急 ,道义所在。
跟着我的思路走,听好了!
MFC 中的MessageBox 不用提供父窗口句柄,也就是API中的第一个参数,之所以不用提供,是因为mfc已经给你封装了,我们知道任何窗口都派生自CWnd类,它必须提供一个成员记住自己是与那个窗口相关联,于是
成员变量m_hWnd 华丽登场,然后在封装MessageBox(封装后是CWnd类的一个成员函数)时MFC把它传给API的MessageBox,并将其它两个参数指定默认值,所以MFC MessageBox中直接一个参数调用也可以。但是,正如我前面所说 ,MFC 中MessageBox是CWnd类的一个成员函数,所以在任何派生自CWnd类的都可以使用这个函数,所以当你的线程函数是派生自CWnd类的类的成员函数(线程函数可以是类的成员函数吗?这个问题留给你。)或友员函数时,在线程函数中才能使用MFC 中的MessageBox(实际上是CWnd::MessageBox),若线程函数时全局函数则不能访问类的成员函数,要不C++的封装就成摆设了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询