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 设置状态栏的风格
发布评论