当窗口中的像素发生变化时,我正在尝试使用SetWindowsHookEx
. 我可以成功接收 Windows 消息,但是在没有屏幕更新发生时调用了大多数消息,并且在一个像素上多次调用了一些消息。
// WH_GETMESSAGE doesn't call the callback for some reason...
SetWindowsHookEx(WH_CALLWNDPROC, hhookSysMsg, hinstDLL, GetWindowThreadProcessId(hwnd, NULL));
我尝试听WM_PAINT
, WM_NCPAINT
, 和WM_ERASEBKGND
,但由于某种原因,它们不会每次都触发 - 例如,在记事本中,当滚动条颜色发生变化时(例如,将光标悬停在它们上方)或更改文本时,它不会触发本身。
switch (msg->message)
{
// doesn't catch all screen updates!
case WM_PAINT:
case WM_NCPAINT:
case WM_ERASEBKGND:
// Bit-blit the screen to a file/process the screen/etc.
...
default:
break;
}
有人可以帮我解决这个问题吗?如果在窗口内更改像素时没有运行具体事件,是否有我可以在其上执行 switch-case 表达式的事件列表?