实验12 菜单、工具栏和状态栏
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验内容
创建一个单文档应用程序Ex_SDI,开始运行时主框架窗口的大小为屏幕的1/4大小,并移动到屏幕的右上角。当单击工具栏上的圆圈按钮,该按钮呈按下状态,此时在窗口的客户区的光标为一个圆圈,双击鼠标,则状态栏上显示“你在(x,y)处双击鼠标”(x,y为鼠标在客户区的位置)。若再单击工具栏上的圆圈按钮,该按钮呈正常状态,光标变成原来的箭形,双击鼠标,状态栏上不再显示任何文本。如图T12.1所示是单击圆圈按钮时的程序界面。
实验准备和说明
(1)在教程第5章全部讲授后进行本次实验。
(2)构思本次上机所需要的程序。
实验步骤
1.创建工作文件夹
打开计算机,在“D:\Visual C++程序、LiMing”文件夹中创建一个新子文件夹“实验12”
2.改变运行时窗口的大小和位置
改变运行时窗口的大小和位置设置步骤如下。
(1)启动Visual C++6.0。
(2)用 MFC AppWizard 创建一个默认的单文档应用程序Ex_SDI。在“新建”对话框中将项目文件夹定位到“D:\Visual C++程序\ LiMing\实验12”。
(3)将项目工作去窗口切换到Class View 页面,打开并定位到 CEx_SDIApp::InitInstance 函数处。
(4)在CEx_SDIApp::InitInstance 函数的最后添加下列代码:
BOOL CEx_SDIApp::InitInstance()
{
…
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
CRect rcDesktop;
::GetWindowRect(GetDesktopWindow(),rcDesktop); // 获取屏幕大小
m_pMainWnd->MoveWindow(rcDesktop.Width()/2.0,
rcDesktop.Width()/2, rcDesktop.Height()/2);
return TRUE;
}
(5)编译运行,看看主框架窗口的大小是否为屏幕的1/4大小,且移动到屏幕的右上角。
3.添加并设计一个工具按钮
添加并设计一个工具按钮的具体步骤如下。
(1)将项目工作区窗口切换到ResourceView 页面,双击“Toolbar”项中的IDR_MAINFRAME,打开工具栏资源。
(2)单击工具栏最右侧的空白按钮,在资源编辑器的按钮设计窗口中绘制一个圆,颜色为黑色,然后将其拖动到“帮助”按钮的前面,并使该按钮的前后均有半个空格,设计的工具按钮如图T12.2所示。
(3)双击刚才设计的工具按钮,在弹出的属性对话框中将其标识符设为 ID_TEST,在提示框中输入“用于测试的工具按钮\n测试”,“设置工具按钮的属性”对话框如图T12.3所示。
4.添加并设计一个光标
添加并设计一个光标的具体步骤如下。
(1)按快捷键 Ctrl+R,打开“插入资源”对话框,选择“Cursor”类型后,单击“新建”按钮。
(2)在图形编辑器工作窗口的控制条上,单击“New Device Image”按钮,从弹出的“New Device Image”对话框中,单击“定制”按钮。
(3)在弹出的“定制图像”对话框中,保留默认的大小和颜色素,单击“确定”按钮。回到“New Device Image”对话框。
(4)选择“32×32,16 colors”设备类型,单击“确定”按钮。
(5)在图形编辑器的“Device”组合框中,选择“Monochrome[32×32]”,打开系统Image菜单,选择“Delete Device Image”命令,删除“Monochrome[32×32]”设备类型。如果不这样做,加载后的光标不会采用“32×32,16 colors”设备类型。
(6)保留默认的ID号IDC_CURSORI,用图形编辑器绘制光标图形,指定光标热点位置为(15,15)设计的光标如图T12.4所示。
5.工具按钮的更新
工具按钮的更新有如下步骤。
(1)为CMainFrame类添加一个BOOL型的成员变量m_bIsTest,在CMainFrame类构造函数中将m_bIsTest的初值设为FALSE
(2)用MFC ClassWizard 在CMainFrame类中添加工具按钮ID_TEST的COMMAND UPDATE_COMMAND_UI和消息映射函数,并添加下列代码:
void CMainFrame::OnTest()
{
m_bIsTest=!m_bIsTest;
}
void CMainFrame::OnUpdateTest(CCmdUI*pCmdUI)
{
pCmdUI->SetCheck(m_bIsTest);
}
编译运行并测试。
6.更改应用程序光标
更改应用程序光标的具体步骤如下。
(1)为CMainFrame类添加一个成员变量m_hCursor,变量类型为光标句柄HCURSOR
(2)用MFC ClassWizard为CMainFrame 类添加WM_SETCURSOR的消息映射函数,并增加下列代码:BOOL CmainFrame::onSetCursor(CWnd*pWnd,UINT nHitTest,UINT message)
{
BOOL bRes=CframeWnd::OnSetCursor(pWnd,nHitTest,message);
if(nHitTest==HTCLENT)&&(m_bIsTest))
{ m_hCursor=AfxGetApp()->LoadCursor(IDC_CURSOR1);
SetCursor(m_hCursor);
bRus=TRUE;
}
Return bRes;
}
(3)编译运行并测试。
7.添加状态栏窗口
添加状态栏窗口的具体步骤如下。
(1)将项目工作区窗口切换到ResourceView页面,双击”String Table”项的”String Table” 图标,则在主界面的右边出现字符串编辑器。
(2)在字符串列表的最后一行的空项上双击鼠标左键,弹出一个对话框,在该对话框中,指定一个字符串标识符ID_TEST_PANE,设置字符串值为“你在(1024,1024)处双击鼠标”,注意该字符串的字符个数将决定添加的状态栏窗口的大小。添加一个字符串资源的结果如图T12.5所示。
(3)关闭字符串属性对话框。
(4)打开MainFem.cpp文件,将原先的indicators数组修改如下:
staticUINTindicators[]=
{