如何得到当前的  HDC hDC,          // handle to device context我要用下边的这个函数。
int DrawText(
  HDC hDC,          // handle to device context
  LPCTSTR lpString, // pointer to string to draw
  int nCount,       // string length, in characters
  LPRECT lpRect,    // pointer to struct with formatting dimensions
  UINT uFormat      // text-drawing flags
);

解决方案 »

  1.   

    CDC 有个 GetSafeHdc() 的函数
      

  2.   

    或者用这个
    HDC GetDC(
      HWND hWnd   // handle to a window
    );
      

  3.   

    HDC GetSafeHdc( ) const;
      

  4.   

    GetSafeHdc这个不行吧,这个是CDC的成员函数。HDC GetDC()这个可以。我这样用的,如果用上面哪个,怎么用呢?
    CDC *pDC=GetDC();
     ::DrawTextW(HDC(*pDC), &ct, 1, rc, 
                     DT_SINGLELINE | DT_CENTER | DT_VCENTER);
      

  5.   

    创建一个屏幕设备环境,可以用:
    CDC * pDC=GetDC( );
    这里的GetDC( )是CWnd类的成员函数,它返回一个允许用户绘制它的窗口客户区的设备
    环境;如果还希望绘制非客户区,则使用:
    CDC *pDC=GetWindowDC( );
    如果需要绘制整个屏幕,如编写一个屏幕保护程序或游戏程序时,可能需要对整屏进行
    绘制,这时使用:
    CDC *pDC=CDC::FromHandle (::GetDC (NULL));
      

  6.   

    在CWnd派生类中:CClientDC dc(this);
    dc.DrawText("this", rc, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
      

  7.   

    你不是能得到CDC指针么?CDC *pDC=GetDC();
    HDC hDC=pDC->GetSafeHdc();//加上这个
    ::DrawTextW(hDC, &ct, 1, rc, DT_SINGLELINE | DT_CENTER | DT_VCENTER);