VC++中模态对话框和非模态对话框的编程
- 格式:pdf
- 大小:1.24 MB
- 文档页数:3
VS2010(MFC)编程--几种对话框VS2010/MFC编程:模态对话框及其弹出过程加法计算器对话框程序大家照着做一遍后,相信对基于对话框的程序有些了解了,有个好的开始对于以后的学习大有裨益。
趁热打铁,这一节讲讲什么是模态对话框和非模态对话框,以及模态对话框怎样弹出。
一.模态对话框和非模态对话框Windows对话框分为两类:模态对话框和非模态对话框。
模态对话框是这样的对话框,当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行相应操作退出后,其他窗口才能继续与用户交互。
非模态对话框则是,它弹出后,本程序其他窗口仍能响应用户输入。
非模态对话框一般用来显示提示信息等。
大家对Windows系统很了解,相信这两种对话框应该都遇到过。
之前的加法计算器对话框其实就是模态对话框。
二.模态对话框是怎样弹出的毕竟加法计算器程序大部分都是MFC自动生成的,对话框怎么弹出来的大家可能还不是很清楚。
下面简单说说它是在哪里弹出来的,再重新建一个新的对话框并弹出它,这样大家实践以后就能更灵活的使用模态对话框了。
大家打开Addition.cpp文件,可以看到CAdditionApp类有个InitInstance()函数,在MFC应用程序框架分析中提到过此函数,不过那是单文档应用程序App类中的,函数体不太相同,但都是进行App类实例的初始化工作。
InitInstance()函数的后半部分有一段代码就是定义对话框对象并弹出对话框的,下面给出这段代码并加以注释:C++代码弹出对话框比较关键的一个函数,就是对话框类的DoModal()函数。
CDialog::DoModal()函数的原型为:virtual INT_PTR DoModal();返回值:整数值,指定了传递给CDialog::EndDialog(该函数用于关闭对话框)的nResult 参数值。
如果函数不能创建对话框,则返回-1;如果出现其它错误,则返回IDABORT。
VCMFC⾮模态对话框的实现⽅法众所周知的,MFC中⾮模态对话框在显⽰后,程序其他窗⼝仍能正常运⾏,可以响应⽤户输⼊,还可以相互切换。
本⽂就来给⼤家讲解⼀下⾮模态对话框的实现⽅法:⼀、⾮模态对话框的对话框资源和对话框类实际上,模态对话框和⾮模态对话框在创建对话框资源和⽣成对话框类上是没有区别的,因此,在创建模态对话框时所创建的IDD_TIP_DIALOG对话框资源和CTipDlg类都不需要修改。
⼆、创建及显⽰⾮模态对话框的步骤需要修改的是,对话框类实例的创建和显⽰,也就是之前在CAdditionDlg::OnBnClickedAddButton()函数体中添加的对话框显⽰代码。
下⾯是具体步骤:1. 在AdditionDlg.h中包含CTipDlg头⽂件并定义CTipDlg类型的指针成员变量。
详细操作⽅法是,在AdditionDlg.cpp中删除之前添加的#include "TipDlg.h",⽽在AdditionDlg.h中添加#include "TipDlg.h",这是因为我们需要在AdditionDlg.h中定义CTipDlg类型的指针变量,所以要先包含它的头⽂件;然后在 AdditionDlg.h中为CAdditionDlg类添加private成员变量CTipDlg *m_pTipDlg;。
2.在CAdditionDlg类的构造函数中初始化成员变量m_pTipDlg。
如果cpp⽂件中函数太多,我们可以在Class View上半个视图中找到CAdditionDlg类,再在下半个视图中找到其构造函数双击,中间客户区域即可马上切到构造函数的实现处。
在构造函数体中添加m_pTipDlg = NULL;,这是个好习惯,在任何指针变量使⽤前都初始化,可以避免因误访问重要内存地址⽽破坏此地址的数据。
3.添加⾮模态对话框的创建和显⽰代码。
VC++中注释单⾏代码使⽤“//”,注释多⾏代码可以在需注释的代码开始处添加“/*”,结束处添加“*/”。
VC显示关闭销毁模态与非模态对话框技巧VC++是一种用于Windows平台开发应用程序的集成开发环境,用于构建图形用户界面和控制应用程序的行为。
在VC++中,对话框是一种常用的用户界面元素,可以用于显示和获取用户输入。
在使用对话框时,要注意对话框的显示、关闭和销毁。
1.显示对话框在VC++中,显示一个对话框可以通过以下几种方式实现:a. 使用DoModal函数DoModal函数是CDialog类的一个成员函数,用于显示对话框,并返回对话框的返回值。
例如,可以使用下面的代码显示一个对话框:CMyDialog dlg;dlg.DoModal(;b. 使用Create函数Create函数是CDialog类的另一个成员函数,用于创建对话框,并显示它。
使用Create函数时,需要先调用Create函数创建对话框,然后调用ShowWindow函数显示对话框。
以下是使用Create函数显示对话框的示例代码:CMyDialog dlg;dlg.Create(IDD_MYDIALOG);dlg.ShowWindow(SW_SHOW);c.使用模态对话框模态对话框是一种阻塞式对话框,显示模态对话框时,在对话框关闭之前,用户无法与其他应用程序进行交互。
要显示一个模态对话框,可以通过调用DoModal函数,并传递对话框的资源ID来实现。
以下是使用模态对话框的示例代码:CMyDialog dlg;INT_PTR nResponse = dlg.DoModal(;2.关闭对话框在VC++中,可以使用以下几种方式关闭对话框:a. 使用EndDialog函数EndDialog函数是CDialog类的一个成员函数,用于关闭对话框,并返回对话框的返回值。
以下是使用EndDialog函数关闭对话框的示例代码:OnOKEndDialog(IDOK);b.使用DestroyWindow函数DestroyWindow函数是CWnd类的一个成员函数,用于销毁窗口,并关闭对话框。
VC++中模态对话框和非模态对话框的编程
李琳
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】2006(000)003
【摘要】对话框(Dialog)在Windows应用程序中使用的频率相当高。
它主要用来接收用户的输入。
对话框实际上是一个窗口。
在MFC中对话框的功能被封装在CDialog类中,CDialog类是CWnd类的派生类。
【总页数】3页(P33-35)
【作者】李琳
【作者单位】中国石油勘探开发研究院西北分院
【正文语种】中文
【中图分类】TP3
【相关文献】
1.VC++编程改变工作目录对话框 [J], 赵华永;王建
2.Pop-Up Menu在非模态对话框中实现UPDATE_COMMAND_UI机制 [J], 刘东华
3.基于VC++的对话框编程中UpdateData函数的应用 [J], 陈致远;骆刚
4.VC++中的对话框类重建和变量初始化 [J], 崔荣华;李元宗
5.VC中的模态对话框和非模态对话框 [J], 孟金红
因版权原因,仅展示原文概要,查看原文内容请购买。
c#中的模态对话框和⾮模态对话框模态对话框弹出窗⼝阻⽌调⽤窗⼝的所有消息响应。
只有在弹出窗⼝结束后调⽤窗⼝才能继续。
在模态窗⼝“关闭”后,可以读取模态窗⼝中信息,包括窗⼝的返回状态,窗⼝⼦控件的值。
⾮模态对话框可以在弹出窗⼝和调⽤窗⼝之间随意切换。
调⽤窗⼝调⽤show⽅法后,下⾯的代码可以⽴即执⾏。
在⾮模态窗⼝关闭后,窗⼝的所有资源被释放,窗⼝不存在,⽆法获取窗⼝的任何信息。
所谓模态对话框,就是指除⾮采取有效的关闭⼿段,⽤户的⿏标焦点或者输⼊光标将⼀直停留在其上的对话框。
⾮模态对话框则不会强制此种特性,⽤户可以在当前对话框以及其他窗⼝间进⾏切换概念说明1 模态窗⼝打开模态窗⼝后,只要不关闭该窗⼝,⿏标焦点或者光标就会⼀直停留在该窗⼝上。
只有关闭该窗⼝后,调⽤窗⼝才能继续。
模态窗⼝关闭后,仍可以读取模态窗⼝中的信息,如窗⼝的返回状态等。
2 ⾮模态窗⼝打开⾮模态窗⼝后,仍可以操作调⽤窗⼝。
关闭⾮模态窗⼝,该窗⼝将不复存在,会释放窗⼝的所有资源,所以⽆法得到该窗⼝的任何信息。
实例说明1 建⽴Windows窗体程序ShowAndShowDialogExp,程序主画⾯包含两个按钮,⽤于打开模态窗⼝和⾮模态窗⼝(如下图所⽰)。
2 编写按钮的Click事件代码private void button1_Click(object sender, EventArgs e){Form frm1 = new Form();frm1.Text = "我是模态窗⼝!";frm1.ShowDialog();//打开模态窗⼝(对话框)}private void button2_Click(object sender, EventArgs e){Form frm2 = new Form();frm2.Text = "我是⾮模态窗⼝!";frm2.Show();//打开⾮模态窗⼝(对话框)}3 运⾏代码,进⾏操作体验点击按钮“打开模态窗⼝”,打开模态窗⼝frm1,窗⼝标题栏显⽰“我是模态窗⼝!”,此时⽆法切换到调⽤窗⼝,当关闭该窗⼝后,⼜可以继续操作调⽤窗⼝了。
VC动态创建对话框和按钮、消息响应vc 动态创建对话框和按钮、消息响应1.创建非模态对话框:类*对象=new 类BOOL 对象->Create(ID,this);创建后需调用ShowWindow函数将对话框显示出来对象->ShowWindow(SW_SHOW);在非模态对话框中点击确定和取消时,对话框并不销毁,而是隐藏起来,要想销毁,需调用DestroyWindow函数2.动态创建按钮:方法1为要加按钮的类添加一个私有的CButton成为变量m_btn,还要添加一个BOOL 型的私有成员量m_bIsCreated用来确定是否创建了按钮if(m_blsCreated==FALSE)////判断如果没有创建按钮{m_btn.Create("new",/////按钮上显示的文本BS_DEFPUSHBUTTON|WS_VISIBLE|WS_CHILD,///如果没有制定WS_VISIBLE还要调用ShowWindow将其显示出来CRect(0,0,100,100),/////左上角的坐标(0,0),长度为100,100 this,123);ID地址为123m_blsCreated=TRUE;}else{m_btn.DestroyWindow();m_blsCreated=false;}方法2用CWnd类的成员对象m_hWnd用来保存与窗口对象相关联的窗口句柄,如果窗口对象没有与任何窗口相关联,该值为NULL if(!m_btn.m_hWnd){m_btn.Create("new",BS_DEFPUSHBUTTON|WS_VISIBLE|WS_ CHILD,CRect(0,0,100,100),thi s,123);m_blsCreated=TRUE;}else{m_btn.DestroyWindow();m_blsCreated=false;}按钮的动态创建,及添加消息响应函数btn3 = new CButton();btn3->Create("按钮3",BS_PUSHBUTTON|WS_VISIBLE|WS_CHILD,CRect(250,250,320,270),this,10003);其中最后一个参数10003,是ID号,一定要大于100,因为100以内为VC编译系统使用.按钮消息响应(1) 先在CMy12View类中加入afx_msg void PushButton3();(2) 加入消息函数对应代码BEGIN_MESSAGE_MAP(CMy12View, CView)ON_BN_CLICKED(10003, PushButton3)END_MESSAGE_MAP()(3) 编写PushButton3()void CMy12View::PushButton3(){AfxMessageBox("Button3 is pushed!");//MessageBeep(-1);}//不用在CMy12View.h中定义:public:void CMy12View::PushButton3()。
从西方大学的起源和发展看现代大学的精神内核
徐建国
【期刊名称】《北方民族大学学报(哲学社会科学版)》
【年(卷),期】2011(000)002
【摘要】从西方大学的起源和发展我们可以发现,大学,集体探讨学问之团体,之行会,之整体.大学,有规则,有制度,但更重要的是要有精神--追求真理,传承学问,创造科学与服务社会.University学生会之原意,College教授会之团队,后词意演变为大学、学院.但其内涵告知我们需坚持大学之理念,之精神,之追求.大学是学术之圣地,人才
之摇篮,承担着创造、发展、传承科学文化知识,培养高级专门人才,推动社会文明昌盛之重任.
【总页数】6页(P131-136)
【作者】徐建国
【作者单位】宁夏大学,国际教育学院,宁夏银川750021
【正文语种】中文
【中图分类】G649.3
【相关文献】
1.论现代城市精神的法治内核——以近现代法律起源地城市论为立论基础 [J], 朱
汉卿;高俊伟
2.西方大学教授会的起源与发展探析 [J], 唐汉琦
3.西方大学制度及理念的发展对现代高等教育的影响 [J], 李晓婵
4.西方大学教授会的起源与发展探析 [J], 唐汉琦;
5.从无锡乡镇企业发展历程看"四千四万"精神的内核与传承 [J], 朱一丹;王秋涵因版权原因,仅展示原文概要,查看原文内容请购买。