使用VS2010更改MFC程序的状态栏
2011-04-19 17:12
495 查看
这两天试了不想再用恶心的VC6.0,改用VS2010试了一下,发现区别不大,但是在细节上,貌似VS2010可以使用原来的MFC类,但是似乎总是有问题,不太好用。今天就遇到一个问题,本来是最简单的在状态栏显示鼠标坐标,但是使用CStatusBar指针的的SetPaneText()方法时死活不对,总是报错,Google了半天貌似没有遇到这个问题的,当时我就哭了。。。,难道我的人品这么背,不甘心下,有看了一下CMainFrame代码,发现使用的竟然是CMFCStatusBar,难道这是原因?抱着试一试的想法,把CStatusBar换成CMFCStatusBar,运行一下,没问题了。看来有问题不要怕,多看看代码,问题自然解决。。。
附上在状态栏添加鼠标坐标的过程:
1.在String Table中添加一个新项,名字为IDS_MOUSE_POINT(具体什么名字可以随便起),将其Caption设为"X=0000,Y=0000"(不包括引号)
2.在MainFrm.cpp中indicators声明处添加IDS_MOUSE_POINT,注意不要添加到第一行(如果添加后果我不太清楚),代码如下:
3.使用Class Wizard添加WM_MOUSEMOVE的相应函数
4.在相应函数中添加代码如下(注意由于我是基于MapX做二次开发,这是MapX的mousemove的相应函数,不过和windows的大同小异,可以参考使用):
这样就完成了,代码比较简单,没写注释,不太明白的话可以查一下MSDN
附上在状态栏添加鼠标坐标的过程:
1.在String Table中添加一个新项,名字为IDS_MOUSE_POINT(具体什么名字可以随便起),将其Caption设为"X=0000,Y=0000"(不包括引号)
2.在MainFrm.cpp中indicators声明处添加IDS_MOUSE_POINT,注意不要添加到第一行(如果添加后果我不太清楚),代码如下:
static UINT indicators[] = { ID_SEPARATOR, // 状态行指示器 ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, IDS_MOUSE_POINT, };
3.使用Class Wizard添加WM_MOUSEMOVE的相应函数
4.在相应函数中添加代码如下(注意由于我是基于MapX做二次开发,这是MapX的mousemove的相应函数,不过和windows的大同小异,可以参考使用):
void CMy2008302590145View::MouseMoveMapMain(short Button, short Shift, float X, float Y) { // TODO: Add your message handler code here double dX,dY; m_MapX.ConvertCoord(&X, &Y, &dX, &dY, miScreenToMap);//将屏幕坐标换算为地理坐标 // CString strMousePos; // strMousePos.Format(_T("X=%.4f,Y=%.4F"),dX,dY); char* strMousePos; strMousePos = new char[256]; sprintf(strMousePos, "X=%.4f,Y=%.4f", dX, dY); CString outStr; outStr = strMousePos; int len = outStr.GetLength(); CMainFrame* pFrame = (CMainFrame*) AfxGetMainWnd(); CMFCStatusBar* pStatusBar = (CMFCStatusBar*) pFrame-> GetDescendantWindow(AFX_IDW_STATUS_BAR); pStatusBar->SetPaneWidth(pStatusBar->CommandToIndex(IDS_MOUSE_POINT), len * 6); pStatusBar->SetPaneText(pStatusBar->CommandToIndex(IDS_MOUSE_POINT), outStr,TRUE); }
这样就完成了,代码比较简单,没写注释,不太明白的话可以查一下MSDN
相关文章推荐
- 使用VS2010开发Qt程序的4点经验(QT4到QT5的升级,更改sln文件,切换工程使用的Qt库,在VS的Solution Explorer视图中建立文件夹)
- VC++控制台程序使用Mysql,以及和MFC程序的兼容问题,工具VS2010ultimate
- VS2010 使用GDI+创建显示GIF的MFC程序
- VS2010MFC对话框程序中使用Windows Media Player播放音频或视频文件
- (转载)VS2010/MFC编程入门之三十八(状态栏的使用详解)
- VS2010/MFC编程入门之三十八(状态栏的使用详解)
- 在使用Ribbon的MFC程序状态栏中显示鼠标坐标值
- 使用vs2010创建MFC C++ Ribbon程序
- VS2010 使用GDI+创建图片水印的MFC程序
- VS2010/MFC编程入门之三十八(状态栏的使用详解)
- 在使用Ribbon的MFC程序状态栏中显示鼠标坐标值
- 脑上用VS2010编写的VC++程序(使用MFC库
- 【MFC-8】VS2010更改基于对话框的MFC程序标题栏图标和生产的执行文件的图标
- 使用VS2010开发ActiveX(MFC)控件(1)——创建
- 使用SetLocaleInfo设置时间后必须调用广播WM_SETTINGCHANGE,通知其他程序格式已经更改
- 深入浅出MFC代码实例1--控制台程序中使用MFC类库
- VS2010 更改MFC标题栏图标和生成的执行文件图标
- MFC DLL 可以封装MFC的窗体 供别的MFC程序使用
- 使用VS2010工具编写C程序运行方法及程序调试问题
- 如何更改MFC程序图标