gpt4 book ai didi

c++ - Bmp 图像在使用 gdi32 的控制台滚动一段时间后消失

转载 作者:行者123 更新时间:2023-11-28 06:30:39 24 4
gpt4 key购买 nike

我正在尝试使用 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);
}

最佳答案

好吧,将图像显示到窗口就像用粉笔在黑板上画画一样。黑板是你的屏幕,当东西“移动”时,它们实际上会被重新绘制。之前存在的一切都会被抹去并被遗忘。

您的程序从操作系统接收到事件。其中一个事件是 WM_PAINT,只要您的窗口需要重绘它的内容,就会发送该事件,因为它未被发现或有什么东西扫过它,破坏了它的内容。

关于c++ - Bmp 图像在使用 gdi32 的控制台滚动一段时间后消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27646812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com