首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

MFC 双缓冲,该如何处理

2012-08-02 
MFC 双缓冲在onPaint里调用DrawBK函数,未能正确显示图片,谢谢C/C++ codevoid DrawBMP(HDC hDstDC, CString

MFC 双缓冲
在onPaint里调用DrawBK函数,未能正确显示图片,谢谢

C/C++ code
void DrawBMP(HDC hDstDC, CString strPath){    HDC hDC;    HBITMAP hBmp;    HBITMAP hOldBmp;    BITMAP bm;    hDC = CreateCompatibleDC(NULL);    hBmp = (HBITMAP)LoadImage(NULL, strPath, IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_LOADFROMFILE | LR_CREATEDIBSECTION);    hOldBmp = (HBITMAP)SelectObject(hDC ,hBmp);    GetObject(hBmp, sizeof(BITMAP), &bm);    BitBlt(hDstDC, 0, 0, bm.bmWidth, bm.bmHeight, hDC, 0, 0,SRCCOPY);    SelectObject(hDC ,hOldBmp);    DeleteObject(hDC);    DeleteObject(hBmp);}void DrawBK(CPaintDC& dc){    HDC hMemDC;    HDC hDC;    hMemDC = CreateCompatibleDC(NULL);    DrawBMP(hMemDC, L"D:\\1.BMP");    hDC = dc.GetSafeHdc();    BitBlt(hDC, 0, 0, 1000, 1000, hMemDC, 0, 0, SRCCOPY);    DeleteObject(hMemDC);    // dc.BitBlt(330,30,5000,5000,&MemDC,0,0,SRCCOPY);}


[解决办法]
都说没有画布了

C/C++ code
void DrawBK(CPaintDC& dc){      HDC hDC = dc.GetSafeHdc();  int nWidth = dc.GetDeviceCaps(HORZRES);  int nHeight = dc.GetDeviceCaps(VERTRES);    HDC hMemDC = CreateCompatibleDC(hDC);  HBITMAP hBitmap = CreateCompatibleBitmap(hDC, nWidth, nHeight);    HBITMAP hOldBitamp = (HBITMAP)SelectObject(hMemDC, hBitmap);       DrawBMP(hMemDC, L"D:\\1.BMP");  BitBlt(hDC, 0, 0, nWidth, nHeight, hMemDC, 0, 0, SRCCOPY);  SelectObject(hMemDC, hOldBitamp);    DeleteObject(hBitmap);  DeleteDC(hMemDC);} 

热点排行