vc实验报告对话框文档格式.docx
- 文档编号:20008402
- 上传时间:2023-01-15
- 格式:DOCX
- 页数:15
- 大小:156.12KB
vc实验报告对话框文档格式.docx
《vc实验报告对话框文档格式.docx》由会员分享,可在线阅读,更多相关《vc实验报告对话框文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
一、模式对话框
1、新建MFCAPPwizard工程,建立单文档并命名为Motai
2、打开vc的ResourceView视图窗口,右键点击MotaiResources,点插入,新建一个对话框;
3、在对话框中添加静态文本控件,编辑控件,分组框,单选控件,复选框,列表控件
其中应该注意:
性别的组框里面,男性单选框属性设置如下
专业班级下面的下拉列表控件属性设置如下:
4、双击对话框,添加CStuDialog类,基类为CDialog
添加变量:
名称
ID
变量类型
变量名
姓名编辑框
IDC_NAME
string
m_strname
男性单选框
IDC_MALE
int
m_nmale
女性单选框
IDC_FEMALE
英语复选框
IDC_ENGLISH
bool
m_benglish
西班牙语复选框
IDC_SPANISH
m_bspanish
德语复选框
IDC_GERMAN
m_bgerman
日语复选框
IDC_JAPANESE
m_bjapanese
学院列表框
IDC_SCHOOL
专业班级组合框
IDC_MAJOR
m_strmajor
数学水平滚动条
IDC_MATH
m_nmath
编程能力滑块
IDC_PROGRAM
m_nprogram
显示信息按钮
IDC_SHOW
5、在StuDialog.cpp中重载OnInitialDialog函数,初始化列表框,水平滚动条和滑块,添加如下代码
BOOLCStuDialog:
:
OnInitDialog()
{
CDialog:
OnInitDialog();
//TODO:
Addextrainitializationhere
CListBox*pLB=(CListBox*)GetDlgItem(IDC_SCHOOL);
pLB->
InsertString(-1,"
理学院"
);
汽车工程学院"
材料学院"
管理学院"
其他学院"
CScrollBar*pSB=(CScrollBar*)GetDlgItem(IDC_MATH);
pSB->
SetScrollRange(nMin,nMax);
CSliderCtrl*pSlide=(CSliderCtrl*)GetDlgItem(IDC_PROGRAM);
pSlide->
SetRange(0,100);
SetPos(m_nprogram);
returnTRUE;
//returnTRUEunlessyousetthefocustoacontrol
//EXCEPTION:
OCXPropertyPagesshouldreturnFALSE
}
6、紧接着在StuDialog.cpp中重载OnHScroll函数,是的滑块和水平滚动条得以滑动,添加代码:
voidCStuDialog:
OnHScroll(UINTnSBCode,UINTnPos,CScrollBar*pScrollBar)
Addyourmessagehandlercodehereand/orcalldefault
intnTemp1,nTemp2;
nTemp1=pScrollBar->
GetScrollPos();
switch(nSBCode){
caseSB_THUMBPOSITION:
pScrollBar->
SetScrollPos(nPos);
break;
caseSB_LINELEFT:
//leftarrowbutton
nTemp2=(nMax-nMin)/10;
if((nTemp1-nTemp2)>
nMin){
nTemp1-=nTemp2;
}
else{
nTemp1=nMin;
}
SetScrollPos(nTemp1);
caseSB_LINERIGHT:
//rightarrowbutton
if((nTemp1+nTemp2)<
nMax){
nTemp1+=nTemp2;
nTemp1=nMax;
}
OnHScroll(nSBCode,nPos,pScrollBar);
CStringstrText1,strText2;
strText1.Format("
%d"
pSB->
GetScrollPos());
strText2.Format("
pSlide->
GetPos());
m_nmath=pSB->
m_nprogram=pSlide->
GetPos();
SetDlgItemText(IDC_STATIC_TRACK1,strText1);
SetDlgItemText(IDC_STATIC_TRACK2,strText2);
}
7、为了完成视图与对话框的交互,首先在MotaiView.h包括StuDialog.h头文件:
#include"
StuDialog.h"
8、在MotaiView.h中CMotaiView类添加如下数据成员:
private:
CStringm_strName;
intm_nMale;
boolm_bEnglish;
boolm_bSpanish,m_bGerman,m_bJapanese;
CStringm_strMajor;
intm_nMath;
intm_nProgram,Show;
9、打开类向导,在CMotaiView中重载LButtonDown函数,当单击窗口时,弹出对话框,并将输入的数据存入CMotaiView的变量中:
voidCMotaiView:
OnLButtonDown(UINTnFlags,CPointpoint)
CStuDialogdlg;
dlg.DoModal();
m_strName=dlg.m_strname;
m_nMale=dlg.m_nmale;
m_bEnglish=dlg.m_benglish;
m_bSpanish=dlg.m_bspanish;
m_bGerman=dlg.m_bgerman;
m_bJapanese=dlg.m_bjapanese;
m_strMajor=dlg.m_stumajor;
m_nMath=dlg.m_nmath;
m_nProgram=dlg.m_nprogram;
Invalidatedata();
CView:
OnLButtonDown(nFlags,point);
10、添加“显示数据”消息,打开类向导添加WM_SHOW的消息函数:
加入判断是否显示信息的变量:
OnShow()
biaoshi=1;
CStuDialog:
OnOK();
Addyourcontrolnotificationhandlercodehere
11、在CMotaiView中重载OnDraw函数,在窗口中显示与用户交互的信息:
OnDraw(CDC*pDC)
CMotaiDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
pDC->
TextOut(0,0,"
单击弹出学生信息对话框!
"
if(Show==1)
{
CStringShowText,English,Spanish,German,Japanese;
if(m_bEnglish==1)
English.Format("
英语"
elseEnglish.Format("
if(m_bSpanish==1)
Spanish.Format("
西班牙语"
elseSpanish.Format("
if(m_bGerman==1)
German.Format("
德语"
elseGerman.Format("
if(m_bJapanese==1)
Japanese.Format("
日语"
elseJapanese.Format("
TextOut(0,20,m_strName);
TextOut(0,40,m_strMajor);
TextOut(60,40,English);
TextOut(90,40,Spanish);
TextOut(120,40,German);
TextOut(150,40,Japanese);
ShowText.Format("
认为自的数学水平为%d分,编程能力为%d分"
m_nMath,m_nProgram);
TextOut(0,60,ShowText);
//TODO:
adddrawcodefornativedatahere
二、非模态对话框。
1、与非模态类似,建立新建MFCAPPwizard工程,建立单文档并命名为FeiMotai,前六步与建立模态对话框类似。
2、在CStuDialog.h类声明中添加CView的指针和函数:
CView*m_pView;
public:
CStuDialog(CView*pView);
BOOLCreate();
3、自定义消息ID
#defineWM_GOODBYEWM_USER+5
4、添加构造函数:
CStuDialog:
CStuDialog(CView*pView)
m_pView=pView;
并且在原来的构造函数中添加
m_pView=NULL;
5、实现自定义的Creat函数
Create()
returnCDialog:
Create(CStuDialog:
IDD);
6、编辑OnOk、OnCancel和OnShow函数:
OnCancel()
if(m_pView!
=NULL)
m_pView->
PostMessage(WM_GOODBYE,IDCANCEL);
else{
CDialog:
OnCancel();
OnOK()
UpdateData(TRUE);
PostMessage(WM_GOODBYE,IDOK);
biaoshi=1;
PostMessage(WM_GOODBYE,IDC_SHOW);
else
7、同样的在CFeiMotaiView类中添加CStuDialog指针,声明classCStuDialog
包含CStuDialog.h头文件。
#include"
classCStuDialog;
CStuDialog*m_pDlg;
8、添加左击鼠标和右击鼠标消息函数,并实现:
voidCFeiMotaiView:
OnLButtonDown(UINTnFlags,CPointpoint)
if(m_pDlg->
GetSafeHwnd()==0)
m_pDlg->
Create();
CView:
OnRButtonDown(UINTnFlags,CPointpoint)
DestroyWindow();
OnRButtonDown(nFlags,point);
9、重载OnDraw函数:
ShowText.Format("
10、实现自定义的消息处理函数
分别在FeiMotai头文件和cpp文件中添加消息
afx_msgLRESULTOnGoodbye(WPARAMwParam,LPARAMlParam);
ON_MESSAGE(WM_GOODBYE,OnGoodbye)
添加消息处理函数:
LRESULTCMotaiView:
OnGoodbye(WPARAMwParam,LPARAMlParam)
m_strName=m_pDlg->
m_strname;
m_nMale=m_pDlg->
m_nmale;
m_bEnglish=m_pDlg->
m_benglish;
m_bSpanish=m_pDlg->
m_bspanish;
m_bGerman=m_pDlg->
m_bgerman;
m_bJapanese=m_pDlg->
m_bjapanese;
m_strMajor=m_pDlg->
m_stumajor;
m_nMath=m_pDlg->
m_nmath;
m_nProgram=m_pDlg->
m_nprogram;
Show=m_pDlg->
biaoshi;
Invalidate();
m_pDlg->
return0;
结
果
分
析
一、模态对话框的测试:
当弹出对话框后,必须先完成对话框的填写,关闭对话框才能继续其他工作,否则只能在对话框的界面上操作,这就是模态对话框。
二、非模态对话框的测试:
当左击客户区窗口时,弹出对话框,在单击对话框的确定,取消,显示信息均可关闭对话框,另外,在弹出对话框时,在右击客户区窗口,同样可以关闭对话框。
这就是因为我们采用了非模态对话框的形式来编写程序,是通过消息的发送,在视图类中处理消息来关闭窗口,这时,在对话框弹出是,同样可以在视图中进行操作。
备注:
不交此报告者,本次实验为“不合格”。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vc 实验 报告 对话框