我想拖动这个角色。图片:
所以我用这个方法获得鼠标位置:
WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
...
switch (message){
case WM_LBUTTONDOWN:
case WM_MOUSEMOVE:
GetCursorPos(&mousePosition);
break;
}
...
}
该程序似乎运行良好,但如果鼠标位于字符位置之外,它将不再跟随鼠标光标。
如何解决此问题?
答案 0 :(得分:3)
请参阅MSDN上的SetCapture
:
将鼠标捕获设置为属于当前线程的指定窗口。 SetCapture 在鼠标悬停在捕获窗口上时捕获鼠标输入,或者当鼠标悬停在捕获窗口上并且按钮仍然按下时按下鼠标按钮。一次只能有一个窗口可以捕获鼠标。
SetCapture
.. ReleaseCapture
可让您暂时将鼠标事件处理扩展到窗口[事件源自的窗口]之外的空间。
您有一些示例/演示here:
switch (uMsg)
{
case WM_LBUTTONDOWN:
// Capture mouse input.
SetCapture(hwndMain); // <<--- Here we go