logo资料库

《Windows编程》实验报告.doc

第1页 / 共49页
第2页 / 共49页
第3页 / 共49页
第4页 / 共49页
第5页 / 共49页
第6页 / 共49页
第7页 / 共49页
第8页 / 共49页
资料共49页,剩余部分请下载后查看
《Windows 编程》实验报告 学号: 姓名:
实验一 常用控件(1) 1、 实验目的和要求 (1)创建一个默认的对话框应用程序 Ex_Ctrls,如图 1.1 所示。 (2)设计一个如图 1.2 所示的“课程信息”对话框。 图 1.1 Ex_Ctrls 对话框 图 1.2 “课程信息”对话框 (3)实现功能:单击图 1.1 中的“课程信息”按钮,弹出“学生基本信息”对 话框,单击“添加”按钮,对话框内容显示在图 1.1 中的列表框中。 2、 实验准备和说明 (1)具备知识:静态控件、按钮、编辑框、旋转按钮控件、列表框和组合框控 件。 (2)创建本次实验工作文件夹“…\Visual C++程序\实验\实验 1”。 3、 实验内容和步骤 1.启动 Visual C++ 6.0 打开计算机,启动 Visual C++ 6.0 系统。 2.创建一个默认的对话框应用程序 Ex_Ctrls ① 选择“文件”→“新建”菜单,在弹出的“新建”对话框中选择“工程”页 面,选择 MFC AppWizard(exe),在工程框中输入 Ex_Ctrls,并将工程文件夹 定位到“…\Visual C++程序\实验\实验 2”。 ② 单击“确定”按钮,在出现的 Step 1 对话框中选择“基本对话(框)”应用 程序类型,单击“完成”按钮。 ③ 在对话框编辑器中,单击对话框工具栏上的切换网格按钮 ,显示对话框网 第 1 页 共 49 页
格,将对话框标题改为“使用控件”。 ④ 调整对话框的大小,删除对话框中间的“TODO: 在这里设置对话控制。”静 态文本控件和“确定”按钮控件,将“取消”按钮标题改为“退出”,并移至对 话框的下方。 ⑤ 向对话框中添加组框(Group)控件,标题设为“添加”,然后调整其大小和 位置。 ⑥ 添加一个按钮,标题设为“课程信息”,ID 设为 IDC_BUTTON_COURSE。 ⑦ 添加一个列表框,取其默认 ID 号,去掉 Sort 风格属性。 3.添加并设计“课程信息”对话框 ① 按 Ctrl+R 快捷键,弹出“插入资源”对话框,在资源类型列表中选择 Dialog, 单击“新建”按钮。 ② 将该对话框资源的 ID 设为 IDD_COURSE,标题设为“课程信息”,字体设为 “宋体,9 号”。 ③ 将 OK 和 Cancel 按钮的标题改为“添加”和“取消”。 ④ 打开对话框网格,参看图 1.2 的控件布局,为对话框添加如表 1.1 所示的一 些控件。 表 1.1 课程信息对话框添加的控件 添加的控件 ID 号 标 题 其 他 属 性 编辑框(课程号) IDC_EDIT_COURSENO —— 默认 编 辑 框 ( 课 程 名 IDC_EDIT_COURSENAM 称) E —— 默认 组 合 框 ( 所 属 专 业) 组 合 框 ( 课 程 类 型) 编 辑 框 ( 开 课 学 期) IDC_COMBO_SPECIAL —— 默认 IDC_COMBO_TYPE —— 默认 IDC_EDIT_OPEN —— 默认 旋转按钮 IDC_SPIN1 —— Auto buddy、Set buddy 第 2 页 共 49 页
integer、 Right 对齐, 其余默认 编辑框(课时数) IDC_EDIT_COURSEHOU RS —— 默认 编辑框(学分) IDC_EDIT_CREDIT —— 默认 ⑤ 右击添加的课程类型的组合框控件,从弹出的快捷菜单中选择“属性”命令, 将其属性对话框切换到 Data 页面,直接输入内容,输入一行后按 Ctrl+Return 键添加另一行。结果如图 1.3 所示。 图 1.3 课程类型组合框内容输入 ⑥ 按 Ctrl+W 快捷键或双击对话框资源模板的空白处,为 IDD_COURSE 创建一个 对话框 CCourseDlg。 ⑦ 打 开 ClassWizard 的 Member Variables 页 面 , 看 Class name 是 否 是 CCourseDlg,选中所需的控件 ID 号,双击鼠标。依次为表 1.2 控件增加成员变 量。 表 1.2 控件变量 控件 ID 号 变 量 类 别 变量类型 变量名 范 围 和 大 小 IDC_EDIT_COURSENO Value CString m_strNO IDC_EDIT_COURSENAM E Value CString m_strName IDC_COMBO_SPECIAL Value CString IDC_COMBO_SPECIAL Control CComboBox m_strSpecia l m_comboSpec ial —— IDC_COMBO_TYPE Value CString m_strType 第 3 页 共 49 页
IDC_EDIT_OPEN Value BYTE m_nOpen IDC_SPIN1 Control CSpinButtonC trl m_spinOpen —— IDC_EDIT_COURSEHOU RS Value int m_nHours IDC_EDIT_CREDIT Value float m_fCredit 4.添加 CCourseDlg 类代码 ① 用 MFC ClassWizard 为 CCourseDlg 类添加 WM_INITDIALOG 消息映射,并添 加下列初始化代码: BOOL CCourseDlg::OnInitDialog() { } CDialog::OnInitDialog(); m_spinOpen.SetRange( 1, 8 ); m_nHours = 60; m_fCredit = 2.0; m_nOpen = 1; m_strType = "专修"; // 这里对专业组合框进行初如化 m_comboSpecial.AddString( "机械工程及其自动化" ); m_comboSpecial.AddString( "电气工程及其自动化" ); m_strSpecial = "机械工程及其自动化"; UpdateData(FALSE); return TRUE; // return TRUE unless you set the focus to a control ② 用 MFC ClassWizard 为按钮 IDOK 添加 BN_CLICKED 的消息映射,并增加下列 代码: void CCourseDlg::OnOK() { UpdateData(); 第 4 页 共 49 页
m_strNO.TrimLeft(); if (m_strNO.IsEmpty()) { MessageBox("课程号不能为空!"); return; } m_strName.TrimLeft(); if (m_strName.IsEmpty()) { MessageBox("课程名称不能为空!"); return; } CDialog::OnOK(); } 5.添加 CEx_CtrlsDlg 程序代码 ① 按 Ctrl+W 快捷键,打开 MFC ClassWizard 对话框,为列表框控件 IDC_LIST1 添加控件变量 m_List,类型为 CListBox。 ② 用 MFC ClassWizard 为按钮 IDC_BUTTON_COURSE 添加 BN_CLICKED 消息映射, 并添加下列代码: void CEx_CtrlsDlg::OnButtonCourse() { CCourseDlg dlg; if (IDOK != dlg.DoModal()) return; // 清除列表框原来的显示内容 while(m_List.GetCount()!=0) m_List.DeleteString(0); m_List.AddString( "课 程 号:"+dlg.m_strNO); m_List.AddString( "课程名称:"+dlg.m_strName); m_List.AddString( "所属专业:"+dlg.m_strSpecial); m_List.AddString( "课程类型:"+dlg.m_strType); CString str; str.Format("开课学期:%d", dlg.m_nOpen ); m_List.AddString( str ); str.Format("课 时 数:%d", dlg.m_nHours ); 第 5 页 共 49 页
m_List.AddString( str ); str.Format("学 分:%4.1f", dlg.m_fCredit); m_List.AddString( str ); } ③ 在 Ex_CtrlsDlg.cpp 文件的前面添加 CInputDlg 的头文件包含: #include "Ex_CtrlsDlg.h" #include "CourseDlg.h" ④ 编译运行并测试。 6.写出实验报告 4、 实验结果 5、 结论和心得 6、 实验代码 // CourseDlg.cpp : implementation file // #include "stdafx.h" #include "Ex_Ctrls.h" #include "CourseDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif 第 6 页 共 49 页
/////////////////////////////////////////////////////////////////////////// // CCourseDlg dialog CCourseDlg::CCourseDlg(CWnd* pParent /*=NULL*/) : CDialog(CCourseDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCourseDlg) m_strNO = _T(""); m_strName = _T(""); m_nHours = 0; m_fCredit = 0.0f; m_nOpen = 0; m_strType = _T(""); m_strSpecial = _T(""); //}}AFX_DATA_INIT } void CCourseDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CCourseDlg) DDX_Control(pDX, IDC_COMBO_SPECIAL, m_comboSpecial); DDX_Control(pDX, IDC_SPIN1, m_spinOpen); DDX_Text(pDX, IDC_EDIT_COURSENO, m_strNO); DDX_Text(pDX, IDC_EDIT_COURSENAME, m_strName); DDX_Text(pDX, IDC_EDIT_COURSEHOURS, m_nHours); DDX_Text(pDX, IDC_EDIT_CREDIT, m_fCredit); DDX_Text(pDX, IDC_EDIT_OPEN, m_nOpen); DDX_CBString(pDX, IDC_COMBO_TYPE, m_strType); DDX_CBString(pDX, IDC_COMBO_SPECIAL, m_strSpecial); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CCourseDlg, CDialog) //{{AFX_MSG_MAP(CCourseDlg) //}}AFX_MSG_MAP ON_WM_INITMENU() END_MESSAGE_MAP() /////////////////////////////////////////////////////////////////////////// // CCourseDlg message handlers BOOL CCourseDlg::OnInitDialog() { CDialog::OnInitDialog(); m_spinOpen.SetRange( 1, 8 ); m_nHours = 60; m_fCredit = 2.0; m_nOpen = 1; m_strType = "专修"; // 这里对专业组合框进行初如化 m_comboSpecial.AddString( "机械工程及其自动化" ); m_comboSpecial.AddString( "电气工程及其自动化" ); m_strSpecial = "机械工程及其自动化"; UpdateData(FALSE); 第 7 页 共 49 页
分享到:
收藏