VC++中状态栏上添加坐标显示功能
来源:互联网 发布:知名网红淘宝店有哪些 编辑:程序博客网 时间:2024/05/17 07:53
本程序是基于VC6.0 MFC SDI写。
CMainFrame中:
1. 添加窗格:先在String Table里面先定义ID_INDICATOR_POINT,然后将其到状态栏各窗格标志的数组indicators中:
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator,状态提示
ID_SEPARATOR,//状态栏内空窗格
ID_INDICATOR_POINT,//光标的坐标
ID_INDICATOR_CAPS,//大小写状态
ID_INDICATOR_NUM,//数字
ID_INDICATOR_SCRL,//滚动
};
2. 在OnCreate中,添加:
m_wndStatusBar.SetPaneInfo(0,0,SBPS_POPOUT,100);
m_wndStatusBar.SetPaneInfo(1,ID_SEPARATOR,SBPS_POPOUT,120);
//状态栏要输出标题提示的窗格
m_wndStatusBar.SetPaneInfo(2,ID_INDICATOR_POINT,SBPS_STRETCH,120);
3. 添加命令更新消息,更新状态栏(此函数必须添加,不然状态栏不显示坐标)
MainFrame.h中添加:
afx_msg void OnUpdatePane (CCmdUI *pCmdUI);
MainFrame.cpp中添加
映射:
ON_UPDATE_COMMAND_UI(ID_INDICATOR_POINT,OnUpdatePane)
响应函数:
void CMainFrame::OnUpdatePane(CCmdUI *pCmdUI)
{
pCmdUI->Enable();
}
4. 在视类添加MW_MOUSEMOVE消息响应函数,并其中添加代码,显示坐标
void CXXView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
CString str;
CMainFrame *pMainFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;
CStatusBar *pStatus = &(pMainFrame->m_wndStatusBar);
if (pStatus)
{
str.Format("x=%d,y=%d",point.x,point.y);
BOOL bRtn =pStatus->SetPaneText(2,str);
// str.Format("x=%d,y=%d",point.x,point.y);
// CSize size=dc.GetTextExtent(str);
// int nIndex=pStatus->CommandToIndex(ID_INDICATOR_POINT);
// pStatus->SetPaneInfo(nIndex,ID_INDICATOR_POINT,SBPS_NORMAL,size.cx*2);
// pStatus->SetPaneText(nIndex,str); (若在OnCreate中没添加上面所说的代码,则可以用这部分代码,功能一样)
}
CView::OnMouseMove(nFlags, point);
}
5. 总结
总的过程就是,添加窗格标识ID,然后用SetPaneInfo和SetPaneText设置并显示需要的信息,最后,一定要添加标识ID的更新命令响应函数,不然,得不到预期的结果。
同样,对于状态栏上显示时间,也一样的,添加窗格标识,然后添加WM_TIMER消息并在其响应函数中添加对于的代码,最后同样需要添加命令更新函数。
- VC++中状态栏上添加坐标显示功能
- 为鼠标移动事件添加新的功能-在状态栏显示鼠标坐标
- VC++ 对话框中添加状态栏
- 在状态栏中显示鼠标位置坐标
- VC在对话框窗口上添加状态栏
- 状态栏显示鼠标坐标
- 在状态栏显示坐标
- MFC状态栏显示坐标
- VC++之对话框中添加状态栏
- VC++对话框中添加状态栏的方法
- VC++之对话框中添加状态栏
- VC++对话框中添加状态栏的方法
- VC++对话框中添加状态栏的方法
- VC++对话框中添加状态栏的方法
- VC++之对话框中添加状态栏
- VC++中添加工具栏和状态栏
- VC++对话框中添加状态栏的方法
- 在状态栏中添加一个时钟功能
- 我的超时空新娘
- 2010-12-14
- 我的嵌入式arm11学习之路1
- 愿望要靠努力实现
- 1万个小时
- VC++中状态栏上添加坐标显示功能
- 心情贴!
- 问题5 关于动态SQL查询
- oSIP协议栈(及eXoSIP,Ortp等)使用入门(转)
- Google Map Api 的应用
- 让IIS 中可以播放FLV文件的设置
- CDCEx
- C++跨平台手机开发的一点心得
- 注册表 Run、RunOnce 键值解析