VC MFC基本控件的使用
《面向对象程序设计》可视化编程
(Copyrights © CHM21st)
MFC 开发 Windows 应用程序入门
◆ Visual C++ 6.0 开发环境
VC++ 是微软 Visual Studio 的组件之一。它具有编辑、编译、调试等多项功能,是用于开发 Windows 应用程序的重要工具。
◇ VC++ 主窗口构成
◇ VC++ 工具栏
◇ VC++ 菜单栏
◇ 工作区和工程项目
Project(工程项目)
在学习 C 语言时,已经学过 Project(可译作工程或项目)的概念。开发一个应用程序,就是一个 Project。在 C 语言中,如果程序较小,只有一个 C 源文件,可以不建立 Project 文件。当程序较大,尤其是多人共同开发时,必须建立 Project。在 Project 中,可能会有不同类型的文件,如 C 文件,H 文件,lib 文件等。
用 VC++ 开发应用程序时,必须有 Project。
Workspace(工作区)
用 VC++ 开发应用程序时,先建立工作区,然后在工作区内建立 Project。在初学阶段,一个工作区内,一般只有一个 Project。
注意保存工作区文件。继续工作应先打开工作区。
◆ 用 MFC 开发 Windows 应用程序
◇ 应用程序界面形式的分类
1.单文档界面(SDI,Single Documant)
应用程序运行时,只能打开一个文档。例如“记事本”或“写字板”。
2.多文档界面(MDI,Multiple Document)
应用程序运行时,可以同时打开多个文档。例如 Word 或 Excell。
3.基于对话框(Dialog based)
应用程序显示一个简单的对话框来处理用户的输入。例如“计算器”。
◇ MFC AppWizard ()
MFC(Microsoft Foundation Class)微软基本类库提供了200多个编写好的类,Windows 应用程序的开发者可以直接实例化这些类,用于自己的程序,也可以在此基础上派生自己的类。这可以避免重复性工作,提高开发效率。
基于 MFC 的 AppWizard(应用程序编程向导)可以为开发人员生成基本的应用程序框架,使编程工作易于进行。
◆ 例1.1 开发一个单文档的“记事本”程序
◇ 启动 VC++,选择 New,在 Projects 选项卡中点选 MFC AppWizard(exe),选择(或输入)子目录,输入工程名,单击 OK。
◇ 在 Step 1 选择 Single Document。在 Step 6,利用下拉式列表框选择 CEditView 作为视图类的基类。
◇ 编译后运行。
◆ 例1.2 单选钮的应用。界面如下:
◇ 本题的程序可在上一题程序的基础上进行。
◇ 添加 Radio Button (单选钮)。在第一个单选钮的属性(Properties)中,选中 Group(将四个单选钮设为一组)。
◇ 利用 ClassWizard (类向导)将该组设置单选钮设成一个整型变量。
◇ 修改 OnOK 的程序代码:
void CV12Dlg::OnOK() { UpdateData(TRUE); if(m_nRadio==0) m_nResult=m_nOp1+m_nOp2; if(m_nRadio==1) m_nResult=m_nOp1-m_nOp2; if(m_nRadio==2) m_nResult=m_nOp1*m_nOp2; if(m_nRadio==3) m_nResult=m_nOp1/m_nOp2; UpdateData(FALSE); }
◇ 编译后运行。
◆ 例1.3 各种控件的使用。界面如下:
◇ 在ClassWizard中设置变量:
◇ 程序如下:
(1) 移动滑块时在右侧文本框内显示数字: void CV13Dlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { UpdateData(TRUE); CSliderCtrl* slider=(CSliderCtrl*)pScrollBar; int pos=slider->GetPos(); m_nEdit3=pos+pos/2+100; UpdateData(FALSE); CDialog::OnHScroll(nSBCode, nPos, pScrollBar); } (2) 按下"OK"按钮显示信息: void CV13Dlg::OnOK() { UpdateData(TRUE); CString msg; char s1[10]; msg=m_sName; if(m_nRadio==0) msg+=" 男 "; if(m_nRadio==1) msg+=" 女 "; msg+=m_sAge; msg+="岁\r\n身高:"; msg+=itoa(m_nHeight,s1,10); msg+="cm \r\n爱好:"; if(m_bSport) msg+="体育 "; if(m_bMusic) msg+="音乐 "; if(m_bArt) msg+="美术 "; MessageBox(msg); } (3) 初始化对话框(加在InitInstance()函数中, 中间三行是添加的): CV13Dlg dlg; dlg.m_nRadio =0; dlg.m_sAge = "19"; dlg.m_nHeight=100; m_pMainWnd = &dlg;
说明:加了第二行程序, 打开对话框时, “性别”已选择为“男”。
加了第三行程序, 打开对话框时, “年龄”显示“19”。
加了第四行程序, 打开对话框时, “身高”显示“100”。
◇ 编译后运行。
◆ 作业:仿照例题编程序上机。