MFC开发过程中,自定义的类中做分割窗口的图像显示,GetDC出现问题:function does not take 0 parameters?

   日期:2020-09-13     浏览:143    评论:0    
核心提示:做MFC分割窗口时,其中含有视类CxxVew窗口,含有General Class (自定义的类CMyXX),在CMyXX中使用GetDC时:CDC* pDC = GetDC() 出现标题中的问题,因为自己没有指定此设备上下文环境是哪个窗口的(没有获取某个窗口的句柄),即编译器不知道在哪个窗口对象中获取DC,且自定义的类又不是从CWnd类派生,所以程序会默认调用Windows Api中的GetDC函数:HDCGetDC(__inHWNDhWnd);Windows Api函...

        做MFC分割窗口时,其中含有视类CxxVew窗口,含有General Class (自定义的类CMyXX),在CMyXX中使用GetDC时:

        CDC* pDC = GetDC();

        出现标题中的问题,因为自己没有指定此设备上下文环境是哪个窗口的(没有获取某个窗口的句柄),即编译器不知道在哪个窗口对象中获取DC,且自定义的类又不是从CWnd类派生,所以程序会默认调用Windows Api中的GetDC函数:

        WINUSERAPI

        HDC 

        WINAPI

        GetDC( HWND hWnd );

        Windows Api函数原型中形参必须是某个窗口的句柄,不能为空,所以会出现标题中的错误,那么如何将视类窗口的指针传递给自定义的类中去使用呢?

解决方案:

        在自定义的类MyXX.h 头文件声明一个CWnd* 指针变量p_WndView,再声明一个函数:void SetWindowWnd(CWnd* pWnd),在cpp文件中实现这个函数:

        void  CMyXX::SetWindowWnd(CWnd* pWnd)

        {

                p_WndView = pWnd;

        }

        在CxxView的头文件中包含MyXX.h这个头文件,且声明一个public的CMyXX的对象变量m_xx,然后在CxxVew.cpp中就可以使用m_xx.SetWindowWnd(this)来传递这个视图窗口的指针到CMyXX中的p_WndView变量中,在MyXX.cpp中就可以在图像显示的函数中使用:

        CDC* pDC = p_WndView->GetDC();

        获取视类窗口的设备上下文指针,进而获取句柄,接下来的操作就简单了

 

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服