您的位置:首页 > 其它

跟踪鼠标在窗口上的坐标

2010-04-16 13:22 169 查看
初学VC++,做了个小例子。

案例要求:

1、当鼠标在窗口中移动时,在窗口中输出当前鼠标相对于窗口的坐标。

2、当鼠标进入窗口时,鼠标形状为十字形。

步骤:

1、首先要VC6.0 创建一个典型的HELLOWORD 的 WIN32 应用程序 “ZB”。

2、然后重写过程函数:在 “ZB.CPP” 中的LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) 中添加鼠标移动消息处理:

case WM_MOUSEMOVE:  //捕捉鼠标移动消息WM_MOUSEMOVE
int xPos,yPos;
//得到当前鼠标的位置
//LOWORD 和 HIWORD 是宏,表示取一个长整形数的低16位与高16位
xPos = LOWORD(lParam);   //获取鼠标的X坐标
yPos = HIWORD(lParam);   //获取鼠标的Y坐标
//得到窗体的坐标后要显示到窗口上
char szOurPut[20];
sprintf(szOurPut,"x = %d ,y = %d   ",xPos,yPos);  //#include<stdio.h> 字符串后多加一些空格用来覆盖先前输出的文本
hdc = ::GetDC(hWnd);  //获得DC句柄
::TextOut(hdc,0,0,szOurPut,strlen(szOurPut));   //通过DC将文本输出到窗口上
::ReleaseDC(hWnd,hdc);  //释放DC句柄
break;


因为其中用到sprintf()函数,故要添加头文件 <stdio.h> 。

3、当然也要修改了鼠标的形状,十字形,在注册窗口类函数ATOM MyRegisterClass(HINSTANCE hInstance)中修改wcex.hCursor = LoadCursor(NULL, IDC_ARROW); 改成 wcex.hCursor = LoadCursor(NULL, IDC_CROSS);

修改鼠标的形状有:

IDC_APPSTARTING:标准箭头和小沙漏;

IDC_ARROW:标准光标;

IDC_CROSS:十字光标。

运行效果图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: