初学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:十字光标。
运行效果图: