zoukankan      html  css  js  c++  java
  • WTL中CMemDC与CDC、CDCHandle的联系

    1.CDC、CDCHandle只是CDCT<typename T>模板类的实例化,区别只是在析构时,一个会释放资源,一个不会。
    typedef CDCT<false>   CDCHandle;
    typedef CDCT<true>    CDC;

    2.CMemDC从CDC继承,除了构造函数与析构函数外没有其它成员函数
    3.CDC的成员变量只有一个:m_hDC
    CMemDC有自己的更多的成员变量,同时还可以使用CDC的m_hDC:
       CDCHandle     m_dc;          // 屏幕的DC Owner DC
       CBitmap       m_bitmap;      // Offscreen bitmap
       CBitmapHandle m_hOldBitmap;  // Originally selected bitmap
       RECT          m_rc;          // Rectangle of drawing area

    4.实际使用:
    (1)先将屏幕的hdc作为CMemDC的构造参数
    void CODButtonImpl::DrawItem ( LPDRAWITEMSTRUCT lpdis )
    {
     RECT rc = lpdis->rcItem;
     CDCHandle hdc = lpdis->hDC;
     CMemDC dc( lpdis->hDC, &rc,RGB(255,0,0));
      ....
    }

    (2)将CMemDC转成换CDC(不转也无所谓,凡正CMemDC没有成员函数供你使用),然后用CDC的成员函数对m_hDC进行绘图操作,注意你是在CDC类的m_hDC中绘图。
      dc.SetPixel(CPoint(10,6),RGB(251,200,99));

  • 相关阅读:
    MFC菜单快捷键的应用
    TDD in C++
    Mapping
    初入股市者怎样看盘
    C++随笔分类列表(高级)
    C++代码优化
    IT生活
    十一年炒股的感悟
    框架设计(第2版)CLR Via C#(1)
    Visual Assist X自己常用的快捷功能
  • 原文地址:https://www.cnblogs.com/huqingyu/p/44652.html
Copyright © 2011-2022 走看看