m_hDCSingle = CreateCompatibleDC(::GetDC(GetSafeHwnd()));
m_hDCWhole = CreateCompatibleDC(::GetDC(GetSafeHwnd()));
m_hBmpWhole = (HBITMAP)LoadImage(NULL, szFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
SelectObject(m_hDCWhole, m_hBmpWhole);
CBitmap *bmp = CBitmap::FromHandle(m_hBmpWhole);
BITMAP stbmp;
bmp->GetBitmap(&stbmp);
m_nWidth = stbmp.bmWidth/5;
m_nHeight = stbmp.bmHeight;
if(m_nWidth > 0 && m_nHeight > 0)
{
SetWindowPos(NULL, 0, 0, m_nWidth, m_nHeight, SWP_NOMOVE);
}
m_hBmpWhole = (HBITMAP)LoadImage(NULL, szFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
SelectObject(m_hDCSingle, m_hBmpWhole); //如果去掉这一句,则无法显示,不知道为什么
BOOL bFlag = ::BitBlt(m_hDCSingle, 0, 0, m_nWidth, m_nHeight, m_hDCWhole, m_nWidth*0, 0, SRCCOPY);
void CAniButton::OnPaint() //如果不这么做,则无法显示
{
// 若不将内存DC:m_hDCSingle拷贝给dc,仍能显示,但按下按钮时闪烁严重
CPaintDC dc(this);
CDC* pDC = CDC::FromHandle(m_hDCSingle);
dc.BitBlt(0, 0, m_nWidth, m_nHeight, pDC, 0, 0, SRCCOPY);
}