atl创建activex问题,我创建有界面的activex,在界面上贴的位图,在ondraw函数中用下面的方法成功,但是在测试时发现hmemDC的值为0
HBITMAP bitmap = LoadBitmap( _Module.GetResourceInstance(), MAKEINTRESOURCE( Xbmp ) );
HDC hdc = m_AtlDraw->hdcDraw; HDC hMemDC = ::CreateCompatibleDC(hdc);
int i = GetLastError(); SelectObject(hMemDC,bitmap);
::BitBlt( hdc,
Xpos, Ypos,Xwidth,Xheigth,
hMemDC, 0, 0, SRCCOPY );
::DeleteObject( bitmap );
::DeleteDC( hMemDC );
HBITMAP bitmap = LoadBitmap( _Module.GetResourceInstance(), MAKEINTRESOURCE( Xbmp ) );
HDC hdc = m_AtlDraw->hdcDraw; HDC hMemDC = ::CreateCompatibleDC(hdc);
int i = GetLastError(); SelectObject(hMemDC,bitmap);
::BitBlt( hdc,
Xpos, Ypos,Xwidth,Xheigth,
hMemDC, 0, 0, SRCCOPY );
::DeleteObject( bitmap );
::DeleteDC( hMemDC );
HBITMAP bitmap = LoadBitmap( _Module.GetResourceInstance(), MAKEINTRESOURCE( Xbmp ) );
if (bitmap)
{
HDC hMemDC = ::CreateCompatibleDC(hdc); if (hMemDC)
{ HGDIOBJ hdcOld = (HGDIOBJ)SelectObject(hMemDC,bitmap);
::BitBlt( hdc, Xpos, Ypos, Xwidth, Xheigth, hMemDC, 0, 0, SRCCOPY ); ::SelectObject(hMemDC, hdcOld); ::DeleteDC( hMemDC );
}
else
ATLTRACE("Failed to CreateCompatibleDC");
::DeleteObject( bitmap );
}
else
{
ATLTRACE("Failed to LoadBitmap");
}