VS2010中单文档/多文档程序----状态栏操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xuan_xuan_2/article/details/77054762

在状态栏里显示鼠标移动在客户区移动时的坐标位置,具体方法如下:
1、新建一个MFC单文档应用程序;
2、添加一个新的状态栏窗格;
在CMainFrame类的实现文件的开始部分,在indicators数据中添加ID_SEPARATOR;
3、在CxxxView类中通过ClassWizard添加鼠标指针移动WM_MOUSEMOVE的消息处理函数OnMouseMove(),并在OnMouseMove()函数中添加代码完成鼠标指针坐标的显示。
完成鼠标坐标指针显示的方法有3中:
方法一:使用SetWindowText()函数,在OnMouseMove()函数中添加如下代码:

CSting str;
str.Format("X:%d  Y:%d",point.x,piont.y);
((CMainFram*)GetParent())->m_wndStatusBar.SetWindowText(str);

注:此方法需将CMainFrame中的m_wndStatusBar改为public类型,而且还要在CxxxView类的执行文件中加入CMainFrame类的头文件#include“MainFram.h”,这样虽达到相应的效果,但破坏了CMainFrame的封装特性,不建议使用。
方法二、使用SetMessageText()函数,在OnMouseMove()函数中添加如下代码:

CString str;
str.Format("X:%d  Y:%d",point.x,point.y);
((CFrameWnd*)GetParent())->SetMessageText(str);

方法三、使用SetPanelText()函数,在OnMouseMove()函数中添加如下代码:

CStatus* pStatus;
pStatus=(CStatusBar*)(AfxGetApp()->m_pMainWnd->GetDescendantWindow(AFX_IDW_STATUS_BAR));
pStatus->SetPaneText(1,str);

使用第三种方法可以在状态栏中任意窗口格上显示鼠标指针坐标,而不会像一、二两种方法,只能在第一窗格中显示鼠标指针坐标。

猜你喜欢

转载自blog.csdn.net/xuan_xuan_2/article/details/77054762
今日推荐