void CFantasyGameView::DrawInfor(CDC* pDC)
{
CRect rect;
GetClientRect(&rect); CDC MemDC;
CBitmap MemBitmap;
MemDC.CreateCompatibleDC(NULL);
MemBitmap.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
MemDC.FillSolidRect(0,0,rect.Width(),rect.Height(),RGB(102,89,95));
MemDC.SetBkMode(TRANSPARENT);
CClientDC dc(this);
if(dc.CreateCompatibleDC(pDC)==FALSE)
{}
//……
这里的dc在Debug下是创建不成功的,在release下是可以的。CClientDC 是用在客户去的吧
{
CRect rect;
GetClientRect(&rect); CDC MemDC;
CBitmap MemBitmap;
MemDC.CreateCompatibleDC(NULL);
MemBitmap.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
MemDC.FillSolidRect(0,0,rect.Width(),rect.Height(),RGB(102,89,95));
MemDC.SetBkMode(TRANSPARENT);
CClientDC dc(this);
if(dc.CreateCompatibleDC(pDC)==FALSE)
{}
//……
这里的dc在Debug下是创建不成功的,在release下是可以的。CClientDC 是用在客户去的吧
"Constructs a CClientDC object that accesses the client area of the CWnd pointed to by pWnd. The constructor calls the Windows functionGetDC. "
就是说在CClientDC dc(this);执行后,DC已经被创建,怎么还需要调用dc.CreateCompatibleDC(pDC)呢?只有在直接构造才需要调用CreateCompatibleDC,比如CDC dc;
你可以打印出dc.m_hDC来看看什么时候DC被赋值了
所以CreateCompatibleDC失败了。
调试的时候是这里没有成功,
BOOL CDC::Attach(HDC hDC)
{
ASSERT(m_hDC == NULL); //这里
表示这是第2次 attach 了