鼠标的编程
1WM_MOUSEMOVE消息
a.首先要记住一件事情就是,鼠标位置是和其在窗口的用户区的位置相对应的。鼠标传递的是相对于窗口左上角的坐标。
b.参数:
int mouse_x = (int)LOWORD(lParam);
int mouse_y = (int)HIWORD(lParam);
int buttons = (int)wParam; 详细见MSDN;
c.例子:case WM_MOUSEMOVE:
{
int p_x = (int)LOWORD(lparam);
int p_y = (int)HIWORD(lparam);
int buttons = (int)wparam;
hdc = GetDC(hwnd);
char buffer[80];
SetTextColor(hdc,RGB(255,0,0));
SetBkColor(hdc,RGB(0,0,0));
SetBkMode(hdc,OPAQUE);
sprintf(buffer,"鼠标定位在坐标(%d,%d)",p_x,p_y);
TextOut(hdc,100,100,buffer,strlen(buffer));
if(buttons&MK_LBUTTON)
{
SetTextColor(hdc,RGB(255,0,0));
SetBkColor(hdc,RGB(0,0,0));
SetBkMode(hdc,OPAQUE);
sprintf(buffer,"鼠标左键被按下");
TextOut(hdc,100,116,buffer,strlen(buffer));
}
else
{
SetTextColor(hdc,RGB(255,0,0));
SetBkColor(hdc,RGB(0,0,0));
SetBkMode(hdc,OPAQUE);
sprintf(buffer,"鼠标左键没有按下");
TextOut(hdc,100,116,buffer,strlen(buffer));
}
ReleaseDC(hwnd,hdc);
}break;
本文介绍了鼠标编程中的WM_MOUSEMOVE消息,强调了鼠标位置相对于窗口用户区的重要性。通过示例代码展示了如何获取鼠标坐标和按键状态,并利用GDI进行文本输出,以显示鼠标的位置和按键状态。
880

被折叠的 条评论
为什么被折叠?



