Bmp图像在一段时间后消失,并在使用gdi32的控制台滚动上消失

时间:2014-12-25 11:32:27

标签: c++ console-application gdi

我正在尝试使用gdi32库显示棋盘,我正在使用此功能来显示bmp图像。但有时候图像会消失。当您尝试向上/向下滚动控制台时,它也会消失。然后我必须重新编译该程序。请帮帮我,这个问题怎么解决。

void LoadBitmapAndDisplay( int xScreen, int yScreen, char* image )
{
        HWND hWnd = GetForegroundWindow();
        HINSTANCE hInstance = (HINSTANCE)GetModuleHandle(NULL);

        HDC hdc = GetDC(hWnd);


        HBITMAP hBmp = (HBITMAP)LoadImageA(NULL,image, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );

        HDC hMemDC = CreateCompatibleDC(hdc);
        SelectObject(hMemDC, hBmp);

        BITMAP bmp;
        GetObject(hBmp, sizeof(BITMAP), &bmp);
        BitBlt(hdc, xScreen, yScreen, bmp.bmWidth, bmp.bmHeight, hMemDC, 0, 0, SRCCOPY);

        DeleteDC(hMemDC);
        DeleteObject(hBmp);
        ReleaseDC(hWnd, hdc);
 }

1 个答案:

答案 0 :(得分:1)

好吧,向窗口显示图像就像用粉笔画到黑板上一样。黑板就是你的屏幕,当事情发生的时候"移动"他们实际上是重绘的。无论之前有什么,都会被抹去,很多都被遗忘。

您的程序从操作系统收到了事件。其中一个事件是WM_PAINT,只要你的窗口需要重新绘制它的东西,就会发送它,因为它被揭开或扫过它的东西,破坏它的内容。