GetDC()可以了  是问的这个吗?

解决方案 »

  1.   

    很多啊,getwindowdc, getclientdc, beginpaint等等都可以得到一个hdc
      

  2.   

    我用CClientDC dc(NULL); 为什么不行呀;
      

  3.   

    我想要的是包含设备上下文CDC或CClientDC,不是HDC 因为我还要 用CDC的lineto和moveto什么的
      

  4.   

    NULL
    是什么懂懂?
    CClientDC(CWnd*);
    你是想通过NULL得到桌面的设备环境吗?
      是这样::: CClientDC(GetDeskTopWindow());
    CClientDC(CWnd*);它的参数位NULL的时候是得到什么的设备????????
      

  5.   

        CClientDC       dc(GetDeskTopWindow()); 编译包错呀
      

  6.   

    CClientDC       dc(::GetDesktopWindow());还不行呀
      

  7.   

    CClientDC dc;
    dc.Attach(hdc);
      

  8.   

    错了,应该是:
    CDC dc;
    dc.Attach(hdc);
      

  9.   

    那hdc用什么呀?GetDC();里面的HWnd怎么得到?
      

  10.   

    好奇怪! 我自己做个类A里面有个函数B画一些线,用CDC *dc=GetDC();或CDC *dc=GetWindowDC();它就编译报错说GetDC和GetWindowDC里面的参数不能为0.我在CmyView里的打开文件的消息函数里用同样的语句,它就不抱错,但调用A类中的B把这个dc做为参数传入,屏上什么都设有.但在OnDraw里用它的pDC就一切OK!这是为什么???
      

  11.   

    hdc可以用GetDC()获得,例如调用你的视图类的GetDC()
      

  12.   

    在你的A类中调用GetDC()或GetWindowDC()是直接调用api,它的入口参数不能为0个,而在CmyView中已经把他们封装起来了,调的是CView的成员函数
      

  13.   

    用CClientDC dc(this);或CDC*pDC;
      pDC=GetDC();
    这是在mfc中的CView类中用的在别的模块中可以用API函数::GetDC(HHANDLE,HDC);
      

  14.   

    哦 恍然大误! 谢!可为什么CVIEW里打开文件的消息函数用GETDC得到CDC屏幕上什么都没有,在OnDraw 里用pDC就OK
      

  15.   

    我知道了,不是CDC的事.用GETDC得到设备上下文了.我在函数里的显示的图象他出来了,就是一OnDraw就被刷掉了.靠着怎么办呀?
      

  16.   

    显示图象的函数不是在OnDraw里调用的.
      

  17.   

    可以先创建一个与屏幕兼容的内存CDC对象,在你的函数中将图象画到这个CDC对象中,然后更新视图窗口。在OnDraw中将图象从内存CDC中贴到屏幕上。
      

  18.   

    CClientDC的构造函数需要一个从CWnd派生下来的窗口指针作为参数,用来获取该窗口的dc,为空肯定失败,CClientDC      dc(::GetDesktopWindow());肯定报错,因为类型都不匹配。
      

  19.   

    你可以在OnDraw()函数里调用你自己写的类的成员函数,其中有个参数pDC,OnDraw 的行参