gpt4 book ai didi

c - 调整窗口大小时位图消失

转载 作者:行者123 更新时间:2023-11-30 15:21:09 25 4
gpt4 key购买 nike

我有一个简单的 GUI,当我位于某个选项卡时,它应该显示图像。我在选项卡进程中有 WM_PAINT 消息,如下所示

case WM_PAINT:
{
PAINTSTRUCT psLOGO;
RECT rcLOGO;
HDC hdcLOGO;
//Prepares for painting window
hdcLOGO = BeginPaint(hwndMonitor, &psLOGO);
//Retrieves the coordinates of the windows client area
GetClientRect(hwndMonitor, &rcLOGO);
//creates a copy of the memory device context
HDC hdcDoubleLOGO = CreateCompatibleDC(hdcLOGO);
HBITMAP Logo = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP1)); //Get a bitmap of the picture to be updated
HBITMAP bmOldLOGO = (HBITMAP)SelectObject(hdcDoubleLOGO, Logo); //Get a handle to the image being replaced
BitBlt(hdcLOGO, 0, 0, rcLOGO.right, rcLOGO.bottom, hdcDoubleLOGO, 0, 0, SRCCOPY); //Bit block transfer of the bitmap color data

SelectObject(hdcDoubleLOGO, bmOldLOGO);
DeleteDC(hdcDoubleLOGO);
EndPaint(hwndMonitor, &psLOGO);
DeleteObject(Logo);
break;
}

hwndMonitor 是该特定标签页的句柄

图像在我打开选项卡时显示,但如果我调整窗口大小,或者如果我最小化并重新打开 GUI,图像将会消失

我必须转到另一个选项卡并返回该选项卡才能恢复图像

我的 WM_PAINT 消息中是否做错了什么?

最佳答案

您还必须对 WM_SIZE 消息使用react。调整窗口大小不会释放绘制消息。

在 WM_SIZE 上只需调用:

InvalidateRect(hwnd,&rect,TRUE);
UpdateWindow(hwnd);

rect 是当前窗口大小的矩形。 Invalidate 标记要重新绘制的矩形,UpdateWindow 确保它立即重新绘制。

关于c - 调整窗口大小时位图消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29684150/

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