在DLG工程中我想在对话框上画一位图,请问怎么取得CDC?/ //CBitmap m_bitmap;
//CDC m_dc,m_dc1;
//m_dc.CreateCompatibleDC(dc);//这里的dc怎么取得
//m_bitmap.LoadBitmap(IDB_BITMAP1);
//m_dc.SelectObject(&m_bitmap);
//dc.BitBlt(10,10,200,300,&m_dc,0,0,SRCCOPY);
//m_bitmap.DeleteObject();
//m_dc.DeleteDC();

解决方案 »

  1.   

    或者请问,在DLG中,不用任何控件,如何在DLG上任画一张位图。
      

  2.   

    CDC *pDC = CDC::FromHandle(this->GetDC());
    然后就是你这些了
      

  3.   

    在对话框的WM_PAINT消息中加入上述代码即可。
    会自动生成:CPaintDC dc(this);
      

  4.   

    直接用CPaintDC dc(this);也可以
      

  5.   

    CDC *pDC;
    pDC->Attach(this->GetDC());
      

  6.   

    我要创建的是与显示设备上下文兼容的内存设备上下文。
    所以CPaintDC dc(this);是不对的。
      

  7.   

    this->GetDC()
    怎么转成HDC类型的??强制转换嘛?(HDC)this->GetDC();?????
    可是这样有问题耶~程序如下。
    CBitmap m_bitmap;
    CDC *pDC = CDC::FromHandle((HDC)this->GetDC());
    CDC m_dc;
    pDC->Attach((HDC)this->GetDC());
    CClientDC cdc(this);
    m_dc.CreateCompatibleDC(pDC);
    m_bitmap.LoadBitmap(IDB_BITMAP1);
    m_dc.SelectObject(&m_bitmap);
    pDC->BitBlt(10,10,200,300,&m_dc,0,0,SRCCOPY);
    m_bitmap.DeleteObject();
    m_dc.DeleteDC();
      

  8.   

    不对,程序如下:
    CBitmap m_bitmap;
    CDC *pDC = CDC::FromHandle((HDC)this->GetDC());
    CDC m_dc;
    //pDC->Attach((HDC)this->GetDC());
    CClientDC cdc(this);
    m_dc.CreateCompatibleDC(pDC);
    m_bitmap.LoadBitmap(IDB_BITMAP1);
    m_dc.SelectObject(&m_bitmap);
    pDC->BitBlt(10,10,200,300,&m_dc,0,0,SRCCOPY);
    m_bitmap.DeleteObject();
    m_dc.DeleteDC();