- 93
- 0
- 约 4页
- 2017-05-12 发布于河南
- 举报
实验5 菜单、工具栏和状态栏
实验5 菜单、工具栏和状态栏
实验目的和内容
(1)创建一个单文档应用程序Ex_SDI。在“查看”菜单下添加一个子菜单“鼠标位置”,ID为ID_VIEW_MOUSE,当选择该菜单命令后,鼠标当前的位置显示到状态栏上,同时该菜单项呈选中状态。再次选择该菜单命令,状态栏不再显示当前鼠标位置,同时该菜单项的选中状态被去除。
(2)在工具栏上添加并设计一个工具按钮图标,使该按钮和ID_VIEW_MOUSE菜单命令联动,并添加一个快捷键Ctrl+M和该菜单命令联动。
(3)在窗口客户区中右击鼠标,弹出快捷菜单,显示主菜单“查看”中的菜单命令。结果如图5.1所示。
图5.1 Ex_SDI运行结果
实验准备和说明
(1)具备知识:菜单、工具条和状态栏。
(2)创建本次实验工作文件夹“…\Visual C++程序\实验\实验5”。
实验内容和步骤
1.启动Visual C++ 6.0
启动Visual C++ 6.0选择菜单,在弹出的对话框中选择标签,应用程序项目类型选择MFC AppWizard(exe)的项目类型,将文件夹定位…\Visual C++程序\实验\实验5”,并在框中输入项目名Ex_单击按钮出现的对话框,选择单文档Single Document,SDI)应用程序类型
③ 保留其他的默认选项,单击按钮出现对话框,显示出用户在步骤中作出的选择,单击按钮系统开始创建。
① 在项目工作区窗口的ResourceView页面中,双击Toolbar中的IDR_MAINFRAME,打开工具栏资源。
② 单击工具栏最右端的空白按钮,在资源编辑器的按钮设计窗口中绘制一个“箭头”,颜色为黑色,然后将其拖动到“帮助”按钮的前面,并使该按钮的前后均有半个空格,结果如图5.3所示。
③ 双击刚才设计的工具按钮,在弹出的属性对话框中将其ID设为ID_VIEW_MOUSE。
5.菜单命令和工具按钮的更新
① 为CMainFrame类添加一个BOOL型的成员变量m_bIsMouse,在CMainFrame类构造函数中将m_bIsMouse的初值设为FALSE。
② 用MFC ClassWizard在CMainFrame类中添加工具按钮ID_VIEW_MOUSE的COMMAND和UPDATE_COMMAND_UI消息映射函数,并添加下列代码:
void CMainFrame::OnViewMouse()
{
m_bIsMouse = !m_bIsMouse;
}
void CMainFrame::OnUpdateViewMouse(CCmdUI* pCmdUI)
{
pCmdUI-SetCheck(m_bIsMouse);
}
③ 编译运行并测试。
6.设置快捷键
① 在项目工作区窗口的ResourceView页面中,双击Accelerator中的IDR_ MAINFRAME,打开快捷键资源。
② 双击加速键列表的最下端的空行,弹出如图5.4所示的Accel Properities对话框,选择菜单项ID_VIEW_MOUSE作为要联动的快捷键的ID号,然后单击“下一键”按钮,并按下Ctrl+1作为此加速键的键值。
图5.4 设置快捷键
③ 编译运行并测试。
7.添加状态栏窗格并显示鼠标当前位置
① 打开MainFrm.cpp文件,将原先的indicators数组修改如下:
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_SEPARATOR,
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
② 用MFC ClassWizard在CEx_SDIView类中映射WM_MOUSEMOVE(移动鼠标)消息,并在映射函数中添加下列代码:
void CEx_SDIView::OnMouseMove(UINT nFlags, CPoint point)
{
CMainFrame* pFrame=(CMainFrame*)AfxGetApp()-m_pMainWnd; // 获得主窗口指针
CStatusBar* pStatus=pFrame-m_wndStatusBar; // 获得主窗口中的状态栏指针
CString str;
if (pFrame-m_bIsMouse)
str.Format(%d,%d,point.x, point.y); // 格式化文本
else
str.Empty(); // 为空字符
if (pStatus)
pStatus-SetPaneText(1,str); // 更新第二个窗格的文本
CView::OnM
原创力文档

文档评论(0)