Я понял это:
MouseHookProc. Mouseproc, данный SetWindowsHookEx, получает все события мыши, которые означают, что я должен проверить, что wParam равно WM_MOUSE или WM_NCMOUSEMOVE . Когда курсор находится над клиентской областью, принимается WM_MOUSE, а когда он находится над неклиентской областью, запускается WM_NCMOUSEMOVE (как в обычном proc сообщений).
LRESULT CALLBACK MouseHookProc(int nCode, WORD wParam, DWORD lParam)
{
if(nCode>=0 && (wParam==WM_MOUSEMOVE || wParam==WM_NCMOUSEMOVE))
{
if(!hwnd)
hwnd=FindWindow(0, "MyWindow");
MSLLHOOKSTRUCT *mhs=(MSLLHOOKSTRUCT*)lParam;
PostMessage(hwnd, WM_MOUSEHOOK, wParam, 0);
}
return CallNextHookEx(hHook,nCode,wParam,lParam);
}
Я думал, что WM_MOUSE - это какое-то соответствующее значение, но не настоящее сообщение мыши, но оно есть.