首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

请问一个MFC画图形的有关问题

2013-12-11 
请教一个MFC画图形的问题class CMemDC : public CDC{private:CBitmap m_bitmap// 实际的bitmapCBitmap* m

请教一个MFC画图形的问题
class CMemDC : public CDC
{
private:
    CBitmap m_bitmap;      // 实际的bitmap
    CBitmap* m_pOldBitmap; // 原先在CMemDC中的位图
    CDC* m_pDC;            // 保存从构造函数中传来的CDC
    CRect m_rect;          // 画的矩形区域
    BOOL m_bMemDC;         // 如果CDC是一个内存DC,则为TRUE

public:

    CMemDC(CDC* pDC) : CDC()//构造函数
    {
        ASSERT(pDC != NULL);//初始化
        m_pDC = pDC;//初始化
        m_pOldBitmap = NULL;//初始化
        m_bMemDC = !pDC->IsPrinting();//判断是否是一个内存DC        
        if (m_bMemDC)    // 创建一个内存DC
        {
            pDC->GetClipBox(&m_rect);
            CreateCompatibleDC(pDC);
            m_bitmap.CreateCompatibleBitmap(pDC, m_rect.Width(), m_rect.Height());
            m_pOldBitmap = SelectObject(&m_bitmap);
            SetWindowOrg(m_rect.left, m_rect.top);
        }
        else  // 这不是一个内存DC,我们只拷贝相关的DC部分以备打印
        {
            m_bPrinting = pDC->m_bPrinting;
            m_hDC       = pDC->m_hDC;
            m_hAttribDC = pDC->m_hAttribDC;
        }
    }

这段代码定义的是一个内存DC类,这段代码中,rect并没有给出具体的区域,比如一个控件窗口的区域,或者(50,50,300,300)等,那这段代码只定义了这么个抽象的rect,如何知道在哪里去绘图啊???
[解决办法]
pDC->GetClipBox(&m_rect);这句话把m_rect初始化了

热点排行