c++ - 将窗口移到屏幕外时,Winapi 编辑控件消失
问题描述
我正在EDIT
用for
循环创建几个元素。当我将窗口移到屏幕外然后又移回屏幕内时,EDIT
控件会消失,事件中会出现一条线WM_PAINT
。
“创建”事件:
case WM_CREATE:
for( int i =0; i < 4; i++ ){
text = CreateWindow("EDIT","text",WS_VISIBLE | WS_CHILD , 0,i*40+100,100,10, hwnd , NULL, NULL, NULL);
}
// Other elements
break;
“绘画”事件:
case WM_PAINT:
{
hdc = GetDC(hwnd);
SetRect(&secondbackground, 0, 70, 800, 500);
FillRect(hdc, &secondbackground, CreateSolidBrush(RGB(0,200,200)) );
ReleaseDC(hwnd, hdc);
hdc = GetDC(hwnd);
SetRect(&secondbackground, 0, 0, 800, 20);
FillRect(hdc, &secondbackground, CreateSolidBrush(RGB(0,100,200)) );
ReleaseDC(hwnd, hdc);
hdc = BeginPaint( hwnd, &ps );
MoveToEx(hdc,1,52,NULL);
LineTo(hdc,100,200);
EndPaint( hwnd, &ps );
hdc = GetDC(hwnd);
SetPixel(hdc,300,300,RGB(255,255,255));
EndPaint( hwnd, &ps );
}
break;
解决方案
在处理 WM_PAINT 时使用 BeginPaint/EndPaint,这将强制执行 GetDC 不执行的背景绘制。
推荐阅读
- php - 魔术方法的双重行为 __set() 和 __get() 带有 property_exists() 函数和没有它
- android - UNIQUE 约束使用房间失败
- javascript - 如何在 TypeScript 中以变量作为键返回对象接口?类型不可分配给类型错误
- python - 如何在 Python 中加入线程
- ios - iOS - 如何在 Xcode 12.1 中添加“今日扩展”目标?
- list - 如何提取地图列表中的数据并将其转换为dart中的地图
- angular-material - MatIcon 的备用库?Angular MatIcon 中没有插入/删除行图标?
- linux - 用于 linux 'look' 实用程序的 ftp 站点
- python - 已执行 jupyter python 代码但未显示正确的输出
- java - Maven Eclipse 调试