2024年4月16日发(作者:)

【例Ex_SDIMouse】将鼠标在客户区窗口的位置显示在状态栏上

① 用MFC AppWizard(exe)创建一个默认的单文档应用程序

Ex_SDIMouse。

② 将项目工作区切换到ClassView页面,展开类节点以及

CMainFrame类的所有项,双击构造函数CMainFrame()节点,此

时将在文档窗口中出现该函数的定义,在它的前面就是状态栏数组的

定义。

③ 将状态栏indicators数组的定义改为下列代码:

static UINT indicators[] =

{

ID_SEPARATOR,

ID_SEPARATOR,

};

④ 打开MFC ClassWizard对话框,为CEx_SDIMouseView

类添加WM_MOUSEMOVE的消息映射并添加下列代码:

void CEx_SDIMouseView::OnMouseMove(UINT

nFlags, CPoint point)

{

CString str;

CMainFrame*

pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;

// 获得主窗口指针

CStatusBar*

pStatus=&pFrame->m_wndStatusBar; // 获得主

窗口中的状态栏指针

if (pStatus)

{

("X=%d,

point.y); // 格式化文本

Y=%d",point.x,

pStatus->SetPaneText(1,str);

// 更新第二个窗格的文本

}

CView::OnMouseMove(nFlags, point);

}

⑤ 将项目工作区切换到FileView页面,展开Head Files(头

文件)所有节点,双击MainFrm.h文件,找到并将保护变量

m_wndStatusBar变成公共变量,即:

public:

CStatusBar m_wndStatusBar;

protected: // control bar embedded members

CToolBar m_wndToolBar;

⑥ 类似的,打开Ex_文件,并在其开始处

添加下列语句:

#include "Ex_SDIMouseView.h"

#include "MainFrm.h"

⑦ 编译并运行,结果如图12.18所示。

图12.18 鼠标的位置显示在状态栏上

图12.19 设置状态栏的风格