to:  zbde00(为了讨老婆喜欢,努力学习中......) 
我改了,如下,可效果一样。CClientDC dc(this),会不会是这个this的问题,我在doc-view中,用CDC *pDC=GetDC()和CClientDC pDC(this)都正确,是在view的画图区域对应的;我现在就想找个和控件的表面对应的DC,就像原来我没有派生OnCreate()和OnPaint()时,在OnDraw()中用它的第一个参数pdc画图一样它的调用过程是先OnPaint(),在OnPaint()有一句是调用OnDraw()的。int CBkzsCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1;

// TODO: Add your specialized creation code here
CDC dc;
dc.CreateCompatibleDC(NULL);
CBitmap bitmap;
// CDC *pDC=GetDC();
CClientDC pDC(this);
bitmap.CreateCompatibleBitmap(&pDC,800,600);
ReleaseDC(&pDC);
CBitmap *pOldBitmap=(CBitmap *) dc.SelectObject(&bitmap);
dc.PatBlt(0,0,800,600,WHITENESS);
dc.SelectObject(pOldBitmap);
m_hMemDC=dc.Detach();
m_hBitmap=(HBITMAP)bitmap.Detach();
return 0;
}

解决方案 »

  1.   

    关键是OnPaint与OnDraw有什么区别与联系?建一个mfc,activex用的就是OnDraw,而atl用的是OnPaint.不知为什么?
      

  2.   

    好长时间没有学习MFC了,所以具体的我也不知道,如果代码不是很长,你发到我信箱里面,我慢慢研究一下.
    [email protected]
      

  3.   

    Client dc(this);
    CRect rectClient;
    GetCurrentClient(rectClient);
      

  4.   

    to: zbde00(为了讨老婆喜欢,努力学习中......)      我已经寄给你了,有劳了