《Windows编程》实验报告.docx
- 文档编号:9464059
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:66
- 大小:213.90KB
《Windows编程》实验报告.docx
《《Windows编程》实验报告.docx》由会员分享,可在线阅读,更多相关《《Windows编程》实验报告.docx(66页珍藏版)》请在冰点文库上搜索。
《Windows编程》实验报告
《Windows编程》实验报告
学号:
姓名:
实验一常用控件
(1)
1、实验目的和要求
(1)创建一个默认的对话框应用程序Ex_Ctrls,如图1.1所示。
(2)设计一个如图1.2所示的“课程信息”对话框。
图1.1Ex_Ctrls对话框图1.2“课程信息”对话框
(3)实现功能:
单击图1.1中的“课程信息”按钮,弹出“学生基本信息”对话框,单击“添加”按钮,对话框内容显示在图1.1中的列表框中。
2、实验准备和说明
(1)具备知识:
静态控件、按钮、编辑框、旋转按钮控件、列表框和组合框控件。
(2)创建本次实验工作文件夹“…\VisualC++程序\实验\实验1”。
3、实验内容和步骤
1.启动VisualC++6.0
打开计算机,启动VisualC++6.0系统。
2.创建一个默认的对话框应用程序Ex_Ctrls
①选择“文件”→“新建”菜单,在弹出的“新建”对话框中选择“工程”页面,选择MFCAppWizard(exe),在工程框中输入Ex_Ctrls,并将工程文件夹定位到“…\VisualC++程序\实验\实验2”。
②单击“确定”按钮,在出现的Step1对话框中选择“基本对话(框)”应用程序类型,单击“完成”按钮。
③在对话框编辑器中,单击对话框工具栏上的切换网格按钮
,显示对话框网格,将对话框标题改为“使用控件”。
④调整对话框的大小,删除对话框中间的“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_COURSENAME
——
默认
组合框(所属专业)
IDC_COMBO_SPECIAL
——
默认
组合框(课程类型)
IDC_COMBO_TYPE
——
默认
编辑框(开课学期)
IDC_EDIT_OPEN
——
默认
旋转按钮
IDC_SPIN1
——
Autobuddy、Setbuddyinteger、Right对齐,其余默认
编辑框(课时数)
IDC_EDIT_COURSEHOURS
——
默认
编辑框(学分)
IDC_EDIT_CREDIT
——
默认
⑤右击添加的课程类型的组合框控件,从弹出的快捷菜单中选择“属性”命令,将其属性对话框切换到Data页面,直接输入内容,输入一行后按Ctrl+Return键添加另一行。
结果如图1.3所示。
图1.3课程类型组合框内容输入
⑥按Ctrl+W快捷键或双击对话框资源模板的空白处,为IDD_COURSE创建一个对话框CCourseDlg。
打开ClassWizard的MemberVariables页面,看Classname是否是CCourseDlg,选中所需的控件ID号,双击鼠标。
依次为表1.2控件增加成员变量。
表1.2控件变量
控件ID号
变量类别
变量类型
变量名
范围和大小
IDC_EDIT_COURSENO
Value
CString
m_strNO
IDC_EDIT_COURSENAME
Value
CString
m_strName
IDC_COMBO_SPECIAL
Value
CString
m_strSpecial
IDC_COMBO_SPECIAL
Control
CComboBox
m_comboSpecial
——
IDC_COMBO_TYPE
Value
CString
m_strType
IDC_EDIT_OPEN
Value
BYTE
m_nOpen
IDC_SPIN1
Control
CSpinButtonCtrl
m_spinOpen
——
IDC_EDIT_COURSEHOURS
Value
int
m_nHours
IDC_EDIT_CREDIT
Value
float
m_fCredit
4.添加CCourseDlg类代码
①用MFCClassWizard为CCourseDlg类添加WM_INITDIALOG消息映射,并添加下列初始化代码:
BOOLCCourseDlg:
:
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);
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
}
②用MFCClassWizard为按钮IDOK添加BN_CLICKED的消息映射,并增加下列代码:
voidCCourseDlg:
:
OnOK()
{
UpdateData();
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快捷键,打开MFCClassWizard对话框,为列表框控件IDC_LIST1添加控件变量m_List,类型为CListBox。
②用MFCClassWizard为按钮IDC_BUTTON_COURSE添加BN_CLICKED消息映射,并添加下列代码:
voidCEx_CtrlsDlg:
:
OnButtonCourse()
{
CCourseDlgdlg;
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);
CStringstr;
str.Format("开课学期:
%d",dlg.m_nOpen);
m_List.AddString(str);
str.Format("课时数:
%d",dlg.m_nHours);
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:
implementationfile
//
#include"stdafx.h"
#include"Ex_Ctrls.h"
#include"CourseDlg.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
///////////////////////////////////////////////////////////////////////////
//CCourseDlgdialog
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
}
voidCCourseDlg:
:
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()
///////////////////////////////////////////////////////////////////////////
//CCourseDlgmessagehandlers
BOOLCCourseDlg:
:
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);
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
//EXCEPTION:
OCXPropertyPagesshouldreturnFALSE
}
voidCCourseDlg:
:
OnOK()
{
UpdateData();
m_strNO.TrimLeft();
if(m_strNO.IsEmpty()){
MessageBox("课程号不能为空!
");return;
}
m_strName.TrimLeft();
if(m_strName.IsEmpty()){
MessageBox("课程名称不能为空!
");return;
}
CDialog:
:
OnOK();
}
voidCCourseDlg:
:
OnInitMenu(CMenu*pMenu)
{
CDialog:
:
OnInitMenu(pMenu);
}
//Ex_CtrlsDlg.cpp:
implementationfile
//
#include"stdafx.h"
#include"Ex_Ctrls.h"
#include"Ex_CtrlsDlg.h"
#include"Ex_CtrlsDlg.h"
#include"CourseDlg.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
///////////////////////////////////////////////////////////////////////////
//CAboutDlgdialogusedforAppAbout
classCAboutDlg:
publicCDialog
{
public:
CAboutDlg();
//DialogData
//{{AFX_DATA(CAboutDlg)
enum{IDD=IDD_ABOUTBOX};
//}}AFX_DATA
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport
//}}AFX_VIRTUAL
//Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg:
:
CAboutDlg():
CDialog(CAboutDlg:
:
IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
voidCAboutDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
//Nomessagehandlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
///////////////////////////////////////////////////////////////////////////
//CEx_CtrlsDlgdialog
CEx_CtrlsDlg:
:
CEx_CtrlsDlg(CWnd*pParent/*=NULL*/)
:
CDialog(CEx_CtrlsDlg:
:
IDD,pParent)
{
//{{AFX_DATA_INIT(CEx_CtrlsDlg)
//NOTE:
theClassWizardwilladdmemberinitializationhere
//}}AFX_DATA_INIT
//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32
m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
voidCEx_CtrlsDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CEx_CtrlsDlg)
DDX_Control(pDX,IDC_LIST1,m_List);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CEx_CtrlsDlg,CDialog)
//{{AFX_MSG_MAP(CEx_CtrlsDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON_COURSE,OnButtonCourse)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
///////////////////////////////////////////////////////////////////////////
//CEx_CtrlsDlgmessagehandlers
BOOLCEx_CtrlsDlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//Add"About..."menuitemtosystemmenu.
//IDM_ABOUTBOXmustbeinthesystemcommandrange.
ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<0xF000);
CMenu*pSysMenu=GetSystemMenu(FALSE);
if(pSysMenu!
=NULL)
{
CStringstrAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if(!
strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
}
//Settheiconforthisdialog.Theframeworkdoesthisautomatically
//whentheapplication'smainwindowisnotadialog
SetIcon(m_hIcon,TRUE);//Setbigicon
SetIcon(m_hIcon,FALSE);//Setsmallicon
//TODO:
Addextrainitializationhere
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
}
voidCEx_CtrlsDlg:
:
OnSysCommand(UINTnID,LPARAMlParam)
{
if((nID&0xFFF0)==IDM_ABOUTBOX)
{
CAboutDlgdlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog:
:
OnSysCommand(nID,lParam);
}
}
//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow
//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,
//thisisautomaticallydoneforyoubytheframework.
voidCEx_CtrlsDlg:
:
OnPaint()
{
if(IsIconic())
{
CPaintDCdc(this);//devicecontextforpainting
SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);
//Centericoninclientrectangle
intcxIcon=GetSystemMetrics(SM_CXICON);
intcyIcon=GetSystemMetrics(SM_CYICON);
CRectrect;
GetClientRect(&rect);
intx=(rect.Width()-cxIcon+1)/2;
inty=(rect.Height()-cyIcon+1)/2;
//Drawtheicon
dc.DrawIcon(x,y,m_hIcon);
}
else
{
CDialog:
:
OnPaint();
}
}
//Thesystemcallsthistoobta
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Windows编程 Windows 编程 实验 报告