ciy*_*aso -2 c++ windows winapi
我的WM_Paint有问题
如果我让它返回0/1,即使程序最小化,它也会使我的cpu保持在1%左右.
我的绘画窗口正在使用OpenGL
如果我从WM_PAINT中断,则在调整大小时会导致绘图
case WM_PAINT:
{
application->paint_window();
return 0;
}
window = std::make_unique<platform::window>(
L"Main window",
CW_USEDEFAULT, CW_USEDEFAULT,
1200, 600,
WS_OVERLAPPEDWINDOW /*| WS_CLIPSIBLINGS | WS_CLIPCHILDREN*/, 0,
CS_OWNDC,
this, process_message
);
while (::GetMessage(&msg, 0, 0, 0) > 0)
{
if (!::TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:如果我在WM_PAINT中删除我的函数调用,我的CPU增加到15%.如果我什么都不做,为什么会这么高呢?
当窗口的更改改变了客户区的内容时,系统将此消息发送到窗口过程.
系统保持内部更新区域以确定窗口的任何部分是否需要绘画.然后应用程序负责验证它绘制的区域(通过调用BeginPaint,ValidateRect或ValidateRgn).
未能验证不再需要更新的区域将使系统重新生成WM_PAINT消息.这会导致您观察到的资源消耗.
| 归档时间: |
|
| 查看次数: |
174 次 |
| 最近记录: |