为鼠标移动事件添加新的功能-在状态栏显示鼠标坐标
来源:互联网 发布:指针怎么指向数组 编辑:程序博客网 时间:2024/04/30 16:53
这次将本来在客户区输出的鼠标位置改成在状态栏输出。
首先,在“资源符号”中添加三个常量符号,分别为:ID_MOUSE_X,ID_MOUSE_Y,ID_SCROLL_TEXT。
然后在字符串资源中添加三个字符串:
ID_MOUSE_X X = ****
ID_MOUSE_Y Y = ****
ID_SCROLL Welcome to Visual C++.NET
这里的“ * ”表示输入空格,不可以为空,以保证窗口宽度。
将MainFrm.cpp中的indicators数组修改成如下形式:
static UINT indicators[] =
{
ID_SEPARATOR, // 状态行指示器
ID_SCROLL_TEXT,
ID_MOUSE_X,
ID_MOUSE_Y,
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
这时,要修改view类中的OnMouseMove函数了:
void CMouseMoveView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
/*m_MousePos = point; //将鼠标当前的位置赋给成员变量
Invalidate(true); //刷新客户区窗口*/
CString str;
CMainFrame *pFrame = (CMainFrame *)AfxGetApp()->m_pMainWnd;
CStatusBar *pStatus = &pFrame->m_wndStatusBar;
int nIndex;
if (pStatus)
{
str.Format("X = %d", point.x);
nIndex = pStatus->CommandToIndex(ID_MOUSE_X);
pStatus->SetPaneText(nIndex, str, TRUE);
str.Format("Y = %d", point.y);
nIndex = pStatus->CommandToIndex(ID_MOUSE_Y);
pStatus->SetPaneText(nIndex, str, TRUE);
}
CView::OnMouseMove(nFlags, point);
}
在MouseMoveView.cpp文件的开头,将MainFrm.h包含进去,还将CMainFrame类的保护成员m_wndStatusBar 改成公有的,清除掉View类的OnDraw代码。
在CMainFrame类中,手工映射ID_MOUSE_X和ID_MOUSE_Y的命令更新消息:
void CMainFrame::OnUpdateMouseX(CCmdUI *pCmdUI)
{
CMouseMoveView *pView = (CMouseMoveView *)GetActiveView();
pCmdUI->Enable(pView->m_bDisplay);
}
void CMainFrame::OnUpdateMouseY(CCmdUI *pCmdUI)
{
CMouseMoveView *pView = (CMouseMoveView *)GetActiveView();
pCmdUI->Enable(pView->m_bDisplay);
}
还要在MainFrm.cpp文件中包含MouseMoveView.h文件,并且在MouseMoveView.h文件的开头声明
class CMouseMoveDoc;
完成后的程序如下图:
- 为鼠标移动事件添加新的功能-在状态栏显示鼠标坐标
- 为鼠标移动事件添加新的功能-在工具栏添加快捷按钮
- 为鼠标移动事件添加新的功能-让菜单决定是否显示
- 为鼠标移动事件添加新的功能-弹出菜单决定是否显示
- 百度地图开发 随着鼠标移动在状态栏显示鼠标中心的坐标
- 随鼠标移动在状态栏显示地图坐标
- 状态栏显示鼠标坐标
- MFC 在状态栏显示当前鼠标坐标
- 在状态栏中显示鼠标位置坐标
- MFC:在状态栏最左边显示鼠标当前的坐标
- MFC:在状态栏最左边显示鼠标当前的坐标
- 鼠标坐标的显示~
- 获取鼠标在Picture控件中的坐标,并显示到对话框的状态栏中
- 获取鼠标在Picture控件中的坐标,并显示到对话框的状态栏中
- 在使用Ribbon的MFC程序状态栏中显示鼠标坐标值
- 在使用Ribbon的MFC程序状态栏中显示鼠标坐标值
- 获取鼠标在Picture控件中的坐标,并显示到对话框的状态栏中
- mfc编程时相让鼠标的坐标显示在状态栏上
- 一段截屏的JAVA代码
- TAO(The ACE ORB)简介
- 台湾 经济概况
- 6800指令集
- ASP.NET 2.0中使用webpart系列控件
- 为鼠标移动事件添加新的功能-在状态栏显示鼠标坐标
- [Symbian项目进展]网络流量曲线图,代码+效果图
- ASP.NET页面在IE缓存问题的解决
- .NET数据库通用访问
- 组件化的思考
- Target近期工作安排(翟超)
- 动态生成 TreeView
- CIO如何应对技术萎缩
- ArcGIS二次开发方式之VBA