Win32模式对话框和非模式对话框的区别
VS2010之MFC入门到精通教程(155全部)
VS2010/MFC编程入门教程之目录第一部分:VS2010/MFC开发环境第二部分:VS2010-MFC应用程序框架第三部分:对话框第四部分:常用控件第五部分:菜单、工具栏与状态栏第六部分:文档、视图和框架第七部分:MFC常用类第八部分:字体和文本输出第九部分:图形图像第十部分:Ribbon界面开发VS2010/MFC编程入门之前言鸡啄米的C++系列给大家讲了C++的编程入门知识,大家对C++语言在语法和设计思想上应该有了一定的了解了。
但是教程中讲的例子只是一个个简单的例程,并没有可视化窗口。
鸡啄米在这套VS2010/MFC编程入门教程中将会给大家讲解怎样使用VS2010进行可视化编程,也就是基于窗口的程序。
C++编程入门系列主要偏重于理论方面的知识,目的是让大家打好底子,练好内功,在使用VC++编程时不至于丈二和尚摸不着头脑。
本套教程也会涉及到VC++的原理性的东西,同样更重视实用性,让大家学完本套教程以后,基本的界面程序都能很容易编写出来。
VC++简介VC++全称是Visual C++,是由微软提供的C++开发工具,它与C++的根本区别就在于,C++是语言,而VC++是用C++语言编写程序的工具平台。
VC++不仅是一个编译器更是一个集成开发环境,包括编辑器、调试器和编译器等,一般它包含在Visual Studio中。
Visual Studio包含了VB、VC++、C#等编译环境。
当然我们在使用VC++ 6.0的时候为了轻便,总是只单独安装VC++ 6.0。
但自微软2002年发布Visual 以来,微软建立了在.NET框架上的代码托管机制,一个项目可以支持多种语言开发的组件,VC++同样被扩展为支持代码托管机制的开发环境,所以.NET Framework是必须的,也就不再有V C++的独立安装程序,不过可以在安装Visual Studio时只选择VC++进行安装。
VC++版本的选择:VS2010因为VC++ 6.0以后的版本不再有独立的安装程序,所以鸡啄米在教程中将不会称VC ++ 6.0以后的版本为VC++ 7.0等等,而是用VC++所属的Visual Studio的版本名称代替,比如VS2003。
对话框的八种形式
对话框的八种形式对话框是一种在计算机界面上显示的交互元素,用于与用户进行交流。
它通常以窗口的形式出现,并提供文本输入和输出的功能。
下面是八种常见的对话框形式:1. 提示对话框(Alert Dialog):提示对话框用于向用户显示一条消息,并通常包含一个“确定”按钮。
它常用于向用户显示一些重要信息或警告。
2. 确认对话框(Confirmation Dialog):确认对话框用于向用户询问一些操作是否确认。
它通常包含“确定”和“取消”两个按钮,用户可以选择其中一个来确认或取消操作。
3. 输入对话框(Input Dialog):输入对话框要求用户输入一些信息,通常以表单的形式出现。
它可以包含文本框、下拉菜单等控件,用户可以填写或选择相应的数据。
4. 文件选择对话框(File Chooser Dialog):文件选择对话框用于让用户选择一个或多个文件。
它通常显示一个文件浏览器界面,用户可以在其中浏览并选择文件。
5. 颜色选择对话框(Color Picker Dialog):颜色选择对话框允许用户选择一个颜色。
它通常显示一个调色板,用户可以在其中选择所需的颜色。
6. 字体选择对话框(Font Picker Dialog):字体选择对话框用于让用户选择一个字体和字号。
它通常显示一个字体列表和字号选择器,用户可以在其中进行选择。
7. 进度对话框(Progress Dialog):进度对话框用于显示一些操作的进度。
它通常包含一个进度条和一条描述性的文本,用户可以看到操作的进展情况。
8. 自定义对话框(Custom Dialog):自定义对话框允许开发人员根据需要自定义对话框的外观和功能。
它可以包含任意的控件和界面元素,以满足特定的需求。
这些对话框形式都是常见的,在计算机界面中经常使用。
它们可以帮助用户进行交互,提供反馈和指导,提高用户体验和界面的可用性。
开发人员可以根据具体的需求选择适合的对话框形式,以满足用户的需求。
项目3 Win32 API网络通信程序
将接收消息、并显示消息的代码写在“接收”按 钮的消息中。
将关闭套接字的代码写到“退出”按钮或 WM_QUIT的消息处理函数中。
LB_ADDSTRING
向列表框中添加内容,需要使用的函数如下: SendDlgItemMessage(hDlg,IDC_RECVBUF,
声明套接字变量的另一种方法
如果要将套接字和地址的声明写在回调函数内 ,则可将套接字声明为静态变量。
编写WinSock对话框程序的流程
将初始化WinSock协议栈的代码写到 WM_INITDIALOG初始化事件中。
将创建套接字、以及监听、接受连接的代码写到 “创建服务器”的按钮消息中。
事件→事件处理程序
事件→消息→消息处理程序 自定义消息→消息处理程序
1.4 句柄
句柄,顾名思义,指的是一个windows对象 的把柄。
Windows中的句柄都是32位的指针变量,用 来指向某个windows对象所占据的内存区。
句柄的使用,极大地方便了Windows管理其 内存中的各种windows对象。
4. 要设置编辑框显示的内容,应使用 函数。
5. 要获取编辑框显示的内容,应使用 函数。
6. 要向列表框中添加一行文本,应使用 函数。
7. 在Windows API程序中,对话框是通过 创建的。
函数
8. 在VC6中,怎样保证向列表框Listbox中添加消息 时,消息总是从上到下按时间顺序显示?
编写Windows程序的两种方法
编写对话框程序
只保留DialogBox函数
对话框和窗体的区别
对话框和窗体
对话框与窗体的区别在于:窗体的上方有菜单 栏和工具按钮栏,下方有状态栏。例如Word 软件;而对话框没有菜单栏和工具栏等
Windows程序设计 第3章 对话框和常见控件
树形控件
树形控件(TreeCtrl)和下面要讲的列表控件(ListCtrl) 在系统中大量被使用,例如Windows资源管理器就是一 个典型的树形控件例子。 树形控件可以用于树形的结构,其中有一个根接点(Root) (Root) 然后下面有许多子结点,而每个子结点上有允许有一个 或多个或没有子结点。MFC中使用CTreeCtrl类来封装树 形控件的各种操作。通过调用 BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );
滚动条控件
滚动条(Scroll Bar)一般不会单独使用,因为SpinCtrl 可以取代滚动条的一部分作用,但是如果我们需要自己生 成派生窗口,滚动条还是会派上一些用场。创建一个滚动 条可以使用成员函数: : BOOL CEdit::Create( LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff );
MFC 提供类CDialog作为对话框服务的基类,类CDialog将对话框模板与使 用对话框时必需熟悉的几种类方法进行封装。对于对话框中发送消息的的 控件,我们可创建相应的消息处理程序。MFC编译器提供的框架工具使得 我们把对话框中的控件消息映像到派生类的类函数变得简单、快捷。对话 框数据映像函数使用专门的值初始化对话框中的控件,接着检索数据并使 之有效。大多数对话框需要类成员变量来跟踪用户的输入,这些数据在数 据映像中使用,它们在对话控件与类变量之间自动映像数据。 为创建对话框,首先建立CDialog对象,然后创建和显示对话框窗口我们 有两种选择:一种方法是调用函数CDialog::DoModal()来创建有模式对话 框窗口,另一种方法是调用函数CDialog::Create()来创建无模式对话框窗口, 在上述两种情况之下,对话框对象先初始化,然后创建对话框以及它的控 件。 类CDialog成员函数Create()使用两种重载原形,最常用的一种如下: Create(UINT nIDTemplate, CWnd * pParentWnd=NULL); 其中,参数nIDTemplate是一个对话框模板的标识符, 参数pParentWnd是对话框所属的父窗口。
mfc对话框基础要点
第五章对话框对话框是一种用户界面,它的主要功能是输出信息和接收用户的输入。
对话框与控件是密不可分的,在每个对话框内一般都有一些控件,对话框依靠这些控件与用户进行交互。
一个典型的对话框例子是选择了File-Open命令后弹出的文件对话框。
5.1对话框和控件的基本概念5.1.1对话框的基本概念对话框(Dialog)实际上是一个窗口。
在MFC中,对话框的功能被封装在了CDialog类中,CDialog类是CWnd类的派生类。
对话框分为模态对话框和非模态对话框两种。
大部分读者都会有这样的经历,当你通过File-Open命令打开一个文件对话框后,再用鼠标去选择菜单将只会发出嘟嘟声,这是因为文件对话框是一个模态对话框。
模态对话框垄断了用户的输入,当一个模态对话框打开时,用户只能与该对话框进行交互,而其它用户界面对象收不到输入信息。
我们平时所遇到的大部分对话框都是模态对话框。
非模态对话框的典型例子是Windows95提供的写字板程序中的搜索对话框,搜索对话框不垄断用户的输入,打开搜索对话框后,仍可与其它用户界面对象进行交互,用户可以一边搜索,一边修改文章,这样就大大方便了使用。
本节主要介绍模态对话框,在第四节将介绍非模态对话框。
从MFC编程的角度来看,一个对话框由两部分组成:1.对话框模板资源。
对话框模板用于指定对话框的控件及其分布,Windows根据对话框模板来创建并显示对话框。
2.对话框类。
对话框类用来实现对话框的功能,由于对话框行使的功能各不相同,因此一般需要从CDialog类派生一个新类,以完成特定的功能。
5.1.2控件的基本概念图5.1对话框中的控件控件(Control)是独立的小部件,在对话框与用户的交互过程中,控件担任着主要角色。
控件的种类较多,图5.1显示了对话框中的一些基本的控件。
MFC的控件类封装了控件的功能,表5.1介绍了一些常用的控件及其对应的控件类。
表5.1控件实际上都是窗口,所有的控件类都是CWnd类的派生类。
VB程序设计课后习题答案
VB课后习题解答第一、二章:1、简述VB6.0的主要特点答:方便、直观的可视化设计工具;面向对象程序设计方法;事件驱动的编程机制;易学易用的应用程序集成开发环境;结构化程序设计语言;完备的联机帮助功能;强大的多媒体、数据库和网络功能。
2、当正常安装VB6.0后,误把Windows子目录删除。
当重新安装Windows后,是否需要再次安装VB6.0?答:要重新安装的。
因为安装VB6.0时,有些VB程序被系统自动安装在Windows目录下,所以一旦删除Windows子目录,就必须重新安装VB6.0。
3、Visual Basic 6.0分为学习版、专业版和企业版,如何知道所安装的是哪个版本?答:在VB6.0的启动界面上,能显示对应的版本。
4、叙述建立一个完整应用程序的过程答:首先建立用户界面的控件对象(简称控件);然后对控件属性进行设置;再对控件事件过程及编程;保存应用程序;程序调试和运行。
5、Visual Basic 6.0有多种类型窗口,若要在设计时看到代码窗口,应怎样操作?答:选择“视图”—>“代码窗口”命令或单击“工程资源管理器”窗口中的“查看代码”按钮。
6、当建立好一个简单的应用程序后,假定该工程仅有一个窗体模块。
试问该工程涉及多少个要保存的文件?若要保存该工程的所有文件,应先保存什么文件?再保存什么文件?若不这样做,系统会出现什么信息?答:涉及两个文件要保存。
先保存窗体文件(.frm),再保存工程文件(.vbp)。
若先保存工程文件,系统也会先弹出“文件另存为”对话框,要求先保存窗体文件。
7、保存文件时,若不改变目录名,则系统默认的目录是什么?答:系统默认的目录是VB988、安装Visual Basic 6.0后,帮助系统是否也已安装?答:没有。
VB6.0的帮助系统在两张光盘上,即MSDN Library,其中还包含了VC、VFP等其他语言的帮助系统。
9、如何使用Visual Basic 6.0的帮助系统?答:最方便的方法是选定要帮助的内容,然后按F1功能键,这时系统打开MSDN Library查阅器,直接显示与选定内容有关的帮助信息。
Windows程序设计-大学模拟题(附答案)
《Windows程序设计》模拟题一,单选题1.所有的Windows应用程序都是由()驱动的.A.事件B.消息C.命令D.菜单[答案]:B2.一般应用程序不会派生自己的()类.A.主框架B.视图C.菜单D.文档[答案]:C3.MessageBox不能完成()功能.A.接收用户输入B.显示消息C.改变对话框标题D.显示问号图标[答案]:A4.Windows系统中的消息不包括().A.标准Windows消息B.控件消息C.命令消息D.视图消息[答案]:D5.()函数是从CView继承来的成员函数,用于刷新整个视图窗口屏幕.A.InvalidateB.MouseMoveC.PaintD.Brush[答案]:A6.菜单()消息,处理菜单状态的动态变化.A.UPDA TE_UIB.UPDATEMANDD.UPDA TE_COMMAND_UI[答案]:DmdUI类的常用成员函数()使菜单项前增加或清除√标志.A.SetCheckB.SetRadioC.SetTextD.Enable[答案]:A8.编辑菜单时为使字母下带下划线,应使用助记符().A.@B.#C.&D.$[答案]:CmdUI类的常用成员函数()使菜单项前增加或清除圆点标志.A.SetCheckB.SetRadioC.SetTextD.Enable[答案]:BmdUI类的常用成员函数()设置菜单项有效或无效.A.SetCheckB.SetRadioC.SetTextD.Enable[答案]:DmdUI类的常用成员函数()改变菜单项文本.A.SetCheckB.SetRadioC.SetTextD.Enable[答案]:C12.CDC的常用函数()可以绘制矩形.A.EllipseB.RectangleC.ArcD.Circle[答案]:B13.应用程序可以使用GDI创建3种类型的图形输出,不包括().A.矢量图形C.光栅图形D.文本[答案]:B14.CDC的常用函数()可以绘制内接矩形的圆.A.EllipseB.RectangleC.ArcD.Circle[答案]:A15.()函数用于在指定位置输出字符串.A.PrintB.TextOutC.ScanfD.Write[答案]:B16.在View的在普通成员函数体内用()获得设备环境.A.CDCB.CWindowDClientDClassDC[答案]:C17.创建画笔不需要给出()参数.A.风格B.宽度C.颜色D.长度[答案]:D18.实线画笔的风格应用()宏.A.PS_SOLIDB.PS_DASHC.PS_DOTD.PS_DASHDOT[答案]:A19.实心画刷只需要定义().A.填充样式B.填充颜色C.填充模式[答案]:B20.对话框()描述对话框的外观和控件布局,在资源描述文件中有对话框的定义.A.资源B.类C.模板D.数据[答案]:A21.调用对话框类的对象的方法,创建并显示模态对话框.A.Print()B.Create()C.DoModal()D.Show()[答案]:C22.CDialog中的()成员函数用于成员变量和控件之间的数据传递.A.ExchangeB.ToDoC.EXTD.UpdateData[答案]:D23.静态控件不包括().A.静态文本B.按钮C.静态图片D.组框[答案]:B24.()不是编辑框的消息.A.BN_CLICKEDB.EN_CHANGEC.EN_KILLFOCUSD.EN_SETFOCUS[答案]:A25.()设置进度条的当前位置.A.SetRangeB.SetStepC.SetPosD.StepIt[答案]:C26.()设置进度条范围.A.SetRangeB.SetStepC.SetPosD.StepIt[答案]:A27.()设置进度条填充步长.A.SetRangeB.SetStepC.SetPosD.StepIt[答案]:B28.()让进度条前进一个步长.A.SetRangeB.SetStepC.SetPosD.StepIt[答案]:D29.文档和视图的关系是().A.一对一B.一对多C.多对一D.多对多[答案]:B30.在视图类中获得文档类对象指针用函数().A.GetDocumentB.UpdateAllViewsC.OnUpdateD.SetModifiedFlag[答案]:A31.Win32应用程序入口函数是().A.MainB.EntranceC.WinMainD.Inlet[答案]:C32.创建窗口工作()不在WinMain中完成.A.设计窗口类B.注册窗口类C.创建窗口D.窗口过程[答案]:D33.项目文件的扩展名是().A.exeB.dspC.dswD.cpp[答案]:B34.利用ClassWizard不能().A.建立新类B.进行消息映射C.增加类的成员变量D.插入资源[答案]:D35.下列()不是MFC消息映射机制有关的宏.A.DECLARE_MESSAGE_MAPB.BEGIN_MESSAGE_MAPC.DECLARE_SERIALD.END_MESSAGE_MAP[答案]:C36.要使鼠标箭头在按钮上暂停时能显示工具栏按钮提示,必须设置工具栏的风格为().A.CBRS_TOOLTIPSB.CBRS_FL YBYC.CBRS_NOALIGND.WS_VISIBLE[答案]:B37.当滑块滑动时,滑块条控件将发送滚动消息来通知父窗口,水平滑动条发送()消息.A.WM_CHARB.WM_HSCROLLC.WM_VSCROLLD.WM_CHANGE[答案]:B38.要将模式对话框在屏幕上显示需要用到().A.CreateB.DoModalC.OnOKD.构造函数[答案]:B39.当滑块滑动时,滑块条控件将发送滚动消息来通知父窗口,垂直滑动条发送()消息.A.WM_CHARB.WM_HSCROLLC.WM_VSCROLLD.WM_CHANGE[答案]:C40.以下控件中,()没有Caption属性.A.按钮B.组框C.编辑框D.静态文本框[答案]:C41.关于工具栏,菜单和加速键的关系,正确的说法是().A.工具按钮与菜单必须一一对应B.工具栏与加速键一一对应C.工具按钮不必与菜单一一对应D.菜单与加速键一一对应[答案]:C42.使用GetDC()获取的设备上下文在退出时,必须调用()释放设备上下文.A.ReleaseDC()B.deleteC.DeleteDC()D.Detach()[答案]:A43.列表框CListBox类的成员函数()用来向列表框增加列表项.A.AddString()B.DeleteString()C.ResetContent()D.FindString()E.GetCount()[答案]:A44.列表框CListBox类的成员函数()用来清除列表项所有项目.A.AddString()B.DeleteString()C.ResetContent()D.FindString()E.GetCount()[答案]:C45.下面()不是MFC设备环境类CDC类的派生类.A.GDIB.CPaintDClientDCD.CWindowDC[答案]:A46.()是非模态对话框.A.查找对话框B.字体对话框C.段落对话框D.颜色对话框[答案]:A47.使用()通用对话框类可用打开文件.A.CFileDialogolorDialogC.CPrintDialogD.CFontDialog[答案]:A48.常见的菜单类型不包括().A.自动菜单B.主菜单C.弹出菜单D.快捷菜单[答案]:A49.下列()不是MFCCDC类中常用的函数.A.TextOutB.EllipseC.RectangleD.CreateRedText[答案]:D50.对话框的功能被封装在()类中.A.CWndB.CDialogC.CObjectmdTarget[答案]:B51.Windows标准控件的属性设置通常由三个选项卡构成,不包括()A.ColorB.GeneralC.StyleD.ExtendStyles[答案]:A52.菜单项助记符前用()引导.A.%B.&C.#D.$[答案]:B53.更新菜单状态的消息是().MANDB.UPDATEC.UPDATE_COMMAND_UID.INV ALIDATE[答案]:C54.能间接调用视图类的OnDraw函数的是()A.OnTimerB.LButtonDownC.SerializeD.Invalidate[答案]:D55.下列()不是MFC消息映射机制有关的宏.A.DECLARE_MESSAGE_MAPB.BEGIN_MESSAGE_MAPC.DECLARE_SERIALD.END_MESSAGE_MAP[答案]:C56.下面()不是GDI对象.A.CFontB.CPalettelientDCD.CBitmap[答案]:C57.列表框的类型不包括()A.SimpleB.DropdownC.DropListD.Scroll[答案]:D58.设置编辑框控件的文本内容,可使用函数()A.SetWindowTextB.SetSelC.ReplaceSelD.GetWindowText[答案]:A59.使用()函数获取的设备上下文在退出时必须调用ReleaseDC释放.A.GetWindowsDCB.GetDCC.GetDesktopDCD.GetClientDC[答案]:B60.类CButton不是下列()控件对应的类.A.命令按钮B.单选按钮C.复选框D.静态文本框[答案]:D61.列表框CListBox类的成员函数()用来返回列表框的列表项总数.A.AddString()B.DeleteString()C.ResetContent()D.FindString()E.GetCount()[答案]:F62.滑动条是由滑动块和刻度线构成,按指定增量移动,CSliderCtrl类的成员函数()代表设置滑动块位置.A.SetRange()B.SetPos()C.SetTic()D.SetPoint()E.SetTicFreq()[答案]:B63.滑动条是由滑动块和刻度线构成,按指定增量移动,CSliderCtrl类的成员函数()代表设置刻度线位置,一次只能设置一个刻度线,用于手动设置刻度线.A.SetRange()B.SetPos()C.SetTic()D.SetPoint()E.SetTicFreq()[答案]:C64.滑动条是由滑动块和刻度线构成,按指定增量移动,CSliderCtrl类的成员函数()代表设置刻度线的疏密程度,配合Autoticks属性使用,每隔一定单位自动显示一条刻度线.A.SetRange()B.SetPos()C.SetTic()D.SetPoint()E.SetTicFreq()[答案]:F二,判断题1.UpdateData(true)函数完成成员变量的值传递给控件的操作.[答案]:F2.基于对话框的应用程序,也有文档类和视图类.[答案]:F3.调用DestroyWindow函数完成非模态对话框的销毁工作.[答案]:T4.每个对话框资源都会关联一个对话框类,常派生于CDialog,通过该类对象间接操纵对话框. [答案]:T5.基于对话框的应用程序在运行时也有菜单栏.[答案]:F6.对话框的功能被封装在CDialog类中.[答案]:T7.使用CColorDialog通过对话框类可以显示颜色对话框.[答案]:T8.DDX为对话框数据交换用.[答案]:T9.DDV完成成员变量和控件之间的交换.[答案]:F10.OnOK函数中进行对话框的初始化工作.[答案]:F11.对话框只由对话框类组成.[答案]:F12.从对话框的工作方式看,对话框可分为模式对话框和非模式对话框.[答案]:T13.查找对话框是模式对话框.[答案]:F14.颜色对话框是非模式对话框.[答案]:F15.每一个单选按钮在对话框类中都可以映射一个int类型值变量.[答案]:F16.当编辑框中的文本已被改变,在新的文本显示之后发送EN_CHANGE通知消息.[答案]:T17.CButton类控件只有按键按钮一种类型.[答案]:F18.一组单选按钮在组中的序号从1开始.[答案]:F19.向列表框增加列表项只能使用CListBox类成员的AddString函数.[答案]:F20.一个旋转按钮控件与一个相伴的控件一起使用时,该控件的Tab键次序必须大于旋转按钮. [答案]:F21.进度条控件的操作封装在CProgressCtrl类.[答案]:T22.多个静态文本控件必须有不同的ID号.[答案]:F23.调用Create成员函数创建动态分割窗口.[答案]:T24.调用Create成员函数创建静态分割窗口.[答案]:F25.视图派生类的成员函数通过调用GetDocument函数得到当前文档对象的指针.[答案]:T26.用户可以通过项目工作区窗口的ResourceView视图来查看资源.[答案]:T27.利用MFC编程时,所有的消息与消息处理函数的添加都必须采用ClassWizard类向导来完成.[答案]:F28.窗口是Windows应用程序的基本操作单元,是应用程序与用户之间交互的接口环境,也是系统管理应用程序的基本单位.[答案]:T29.Windows应用程序的入口也是main函数.[答案]:F30.键盘鼠标消息都是命令消息.[答案]:F31.使用MFCAppWizard[exe]向导创建应用程序框架时,向导生成的文件名和类名是不可以更改的.[答案]:F32.消息映射是将消息处理函数与要处理的特定消息连接起来的一种机制.[答案]:T33.命令消息是由菜单项,工具栏按钮和快捷键等用户界面对象发出的WM_COMMAND消息.[答案]:T34.用快捷键F9既可设置断点,又可取消断点.[答案]:T35.调试程序时,会同时出现Variable窗口和Watch窗口.[答案]:T36.Windows是一个基于事件的消息驱动系统.[答案]:T37.MFC采用消息映射来处理消息.[答案]:T38.WM_RBUTTONDOWN是鼠标右键按下时产生的消息.[答案]:T39.给菜单项定义快捷键,只需在菜单项属性设置对话框的Caption文本框中说明即可. [答案]:F40.快捷菜单一般出现在鼠标箭头的位置.[答案]:T41.UPDATE_COMMAND是更新命令用户接口消息.[答案]:F42.工具栏停靠特性只能设置一次.[答案]:T43.状态栏的功能由CToolBar类实现.[答案]:F44.CMenu类,CToolBar类和CStatusBar类的根基类是相同的.[答案]:T45.菜单选择只可以通过鼠标操作来完成.[答案]:F46.状态栏可以通过资源编辑器来编辑.[答案]:F47.MFC应用程序框架为状态栏定义的静态数组indicators放在MainFrm.h文件中. [答案]:F48.在菜单设计时,&字符的作用是使其后的字符加下划线.[答案]:TlientDC代表整个窗口的设备环境.[答案]:F50.删除CPen对象可调用CPen对象的DeleteObject函数.[答案]:F51.DDB又称GDI位图,它依赖于具体设备,只能存在于内存中.[答案]:T52.创建阴影画刷函数是CreateHatchBrush.[答案]:T53.深绿色RGB值为(0,128,0).[答案]:T54.Windows引入GDI的主要目的是为了实现设备相关性.[答案]:F55.Windows用COLORREF类型的数据存放颜色.[答案]:T56.Windows是按图形方式输出字符的.[答案]:T57.TextOut是CDC类中常用的文本输出函数.[答案]:T58.创建画笔后必须调用CDC类的成员函数SelectObject将画笔选人当前设备环境. [答案]:T59.对话框创建后,发送WM_CREATE消息,在该消息处理代码中创建各控件.[答案]:T60.通过AppWizard建立的程序不能被立即执行.[答案]:F61.打开一个项目,只需打开对应的项目工作区文件.[答案]:T62.在同一项目中,VisualC++在内部用来标识资源的资源符号不能重复.[答案]:T63.在Windows环境下,资源与程序源代码紧密相关.[答案]:F64.用户可以通过选择Tools|Customize菜单命令设置集成开发环境的工具栏.[答案]:T65.项目工作区文件的扩展名为dwp.[答案]:F66.Ctrl+F5是编辑程序的快捷键.[答案]:F67.F7是运行程序的快捷键.[答案]:F三,填空题1.项目工作区文件的扩展名是###.[答案]:dsw2.修改公司,描述等信息需用###编辑器.[答案]:Version3.利用###可以快速创建各种风格的应用程序框架,并可自动生成程序通用的源代码.[答案]:应用程序向导4.启动VisualC++,进入VisualC++IDE,从###菜单上选择New菜单项,此时将弹出New对话框[答案]:应用程序向导5.利用###可以快速创建各种风格的应用程序框架,并可自动生成程序通用的源代码[答案]:File6.句柄是Windows使用的一种无重复整数,主要用来###.[答案]:标识应用程序中的一个对象7.一个单文档的MFC应用程序框架一般包括5个类:应用程序类,框架窗口类,###,文档类和文档模板类.[答案]:视图类8.用户点击菜单项后,会产生###消息.[答案]:WM_COMMAND9.改变菜单项文本是使用CCmdUI类的###成员函数.[答案]:SetText10.处理菜单命令消息首先会在###类中.[答案]:视图11.弹出快捷菜单使用的是CMenu类的###函数.[答案]:TrackPopupMenu12.在状态栏中添加文本使用的是CStatusBar类的###函数.[答案]:SetPaneText13.与DOS字符方式下的输出不同,Windows是按###方式输出的.[答案]:图形14.为了体系Windows的设备无关性,应用程序的输出面向一个称为###的虚拟逻辑设备. [答案]:设备环境15.可以利用CGdiObject类的成员函数###将GDI对象设置成指定的库存对象.[答案]:CreateStockObject16.对话框的主要功能是###和输出信息.[答案]:接收用户输入17.使用###函数可用创建非模式对话框.[答案]:Create18.每个控件最多只能关联Control和Value类型成员变量各###个.[答案]:119.一组单选按钮在对话框类中只能映射一个###类型值变量,对应单选按钮在组中的序号,序号从0开始.[答案]:int。
第3章 WPF文本编辑器
3
主要内容
3.1 文档布局 3.2 RichTextBox控件 RichTextBox控件 3.3 Command实现编辑功能 Command实现编辑功能 3.4 存取文件 3.5 About对话框 About对话框 3.6 文本编辑器查找替换功能 3.7 提示用户保存已被修改的文件 3.8 打印和打印预览 3.9 多选项卡页的文本编辑器
9
(2)右击"解决方案管理器"中的项目名称"文本编辑器 )右击"解决方案管理器"中的项目名称" ",在弹出的快捷菜单中选中"添加(D)|新建文件夹(D)" ,在弹出的快捷菜单中选中"添加( )|新建文件夹( 菜单项,新建文件夹"Images"。右击文件夹"Images", 菜单项,新建文件夹"Images"。右击文件夹"Images", 在弹出的快捷菜单中选中"添加( )|现有项( )"菜单项, 在弹出的快捷菜单中选中"添加(D)|现有项(G)"菜单项, 在出现对话框中选择要作为工具条按纽图标的图形文 件,将这些图形文件放到文件夹"Images"中。 件,将这些图形文件放到文件夹"Images"中。 (3)在工具条面板上增加18个按钮,XAML标记如下, )在工具条面板上增加18个按钮,XAML标记如下, ToolTip属性为中文提示。 ToolTip属性为中文提示。 <ToolBar Height="30" Name="toolBar1" DockPanel.Dock="Top" > <Button Width="30" Height="30" Command="ApplicationCommands.Cut" ToolTip="剪贴"> ToolTip="剪贴"> <Image Source="Images\EditCut.png"></Image> Source="Images\ </Button> …<!-- 以下17个按钮标记省略,请读者完成 --> <!-- 以下17个按钮标记省略,请读者完成 --> </ToolBar>
VB程序设计课后习题答案
VB程序设计课后习题答案VB课后习题解答第一、二章:1、简述VB6.0的主要特点答:方便、直观的可视化设计工具;面向对象程序设计方法;事件驱动的编程机制;易学易用的应用程序集成开发环境;结构化程序设计语言;完备的联机帮助功能;强大的多媒体、数据库和网络功能。
2、当正常安装VB6.0后,误把Window子目录删除。
当重新安装Window后,是否需要再次安装VB6.0?答:要重新安装的。
因为安装VB6.0时,有些VB程序被系统自动安装在Window目录下,所以一旦删除Window子目录,就必须重新安装VB6.0。
3、ViualBaic6.0分为学习版、专业版和企业版,如何知道所安装的是哪个版本?答:在VB6.0的启动界面上,能显示对应的版本。
4、叙述建立一个完整应用程序的过程答:首先建立用户界面的控件对象(简称控件);然后对控件属性进行设置;再对控件事件过程及编程;保存应用程序;程序调试和运行。
5、ViualBaic6.0有多种类型窗口,若要在设计时看到代码窗口,应怎样操作?答:选择“视图”—>“代码窗口”命令或单击“工程资源管理器”窗口中的“查看代码”按钮。
6、当建立好一个简单的应用程序后,假定该工程仅有一个窗体模块。
试问该工程涉及多少个要保存的文件?若要保存该工程的所有文件,应先保存什么文件?再保存什么文件?若不这样做,系统会出现什么信息?答:涉及两个文件要保存。
先保存窗体文件(.frm),再保存工程文件(.vbp)。
若先保存工程文件,系统也会先弹出“文件另存为”对话框,要求先保存窗体文件。
7、保存文件时,若不改变目录名,则系统默认的目录是什么?答:系统默认的目录是VB988、安装ViualBaic6.0后,帮助系统是否也已安装?答:没有。
VB6.0的帮助系统在两张光盘上,即MSDNLibrary,其中还包含了VC、VFP等其他语言的帮助系统。
9、如何使用ViualBaic6.0的帮助系统?答:最方便的方法是选定要帮助的内容,然后按F1功能键,这时系统打开MSDNLibrary查阅器,直接显示与选定内容有关的帮助信息。
模式对话框与非模式对话框的区别
模式对话框与非模式对话框的区别模式对话框就是不处理它就没法处理父窗口,而非模式对话框就是不用先处理此对话框也可以处理父窗口.例子:在桌面上右击我的电脑,选择属性,弹出系统属性窗口,点击下面的技术支持,弹出技术支持信息,现在再对系统属性窗口进行操作就操作不了,这种叫做模式对话框;关闭技术支持信息,在系统属性里选择硬件,点击设备管理器,弹出设备管理器窗口,现在再对系统属性窗口进行操作仍然可以操作,这种就叫做非模式对话框。
在WIN32中,模式对话框的创建一般是使用DialogBox来进行创建的。
而非模式对话框则是利用CreateWindow来创建的。
在MFC 或是WTL中,模式对话框一般是使用DoModal,而非模式对话框的创建则是使用Create。
一、使用中的区别模式对话框创建后,程序的其他窗口便不能进行操作,必须将该窗口关闭后,其他窗口才能进行操作。
而非模式对话框则无需这样,它不强制要求用户立即反应,而是与其他窗口同时接受用户操作。
二、消息响应的区别在消息响应方面,模式对话框和非模式对话框之间又有着很大的区别。
模式对话框工作的时候,它有内部的消息泵机制,控件之间的交互不用我们人为的去控制,系统会帮助我们去处理。
非模式对话框则像普通窗口一样,则由WinMain中书写的消息循环驱动。
但由于是对话框,它对一些消息有特殊的处理。
因此,在消息循环中,需要先对对话框提供截获消息的机会。
While (GetMessage(&msg, NULL, 0, 0)){if (hDlgModeless == 0 || !IsDialogMessage(hDlgModeless, &msg)){TranslateMessage(&msg);DispatchMessage( &msg);}}如果当前取得的消息是对话框的消息,IsDialogMessage 将它交由对话消息处理函数处理,并返回TRUE。
编程环境使用及基本Windows程序
实验一编程环境使用及基本Windows程序一、目的和要求1.熟悉Visual C++6.0编程环境及编译错误的处理。
2.了解Windows程序的基本组成及其基本工作原理。
3.输入一个Windows程序,改正输入中的错误,观看运行结果。
二、实验原理Visual C++6.0是Windows环境下最主要的应用开发系统之一,它是C++语言的集成开发环境,与Win32紧密相连,拥有强大的调试功能为大型复杂软件的开发提供了有效的排错手段。
创建新的项目工作区:File->New->Workspaces-> 输入工作区名字并指定工作区目录,然后选择Win32应用程序,添加C++源文件,输入文件名即可。
项目工作区窗口简介:项目工作区由ClassView、ResourceView及FileView三个面板组成。
核心概念:窗口:是Windows应用程序基本的操作单元,是应用程序与用户之间交互的接口环境,也是系统管理应用程序的基本单位。
事件驱动:Windows程序设计围绕事件或消息的产生驱动运行处理函数。
消息是描述事件发生的信息。
句柄:是整个Windows编程的基础,一个句柄是Windows使用的一个唯一的整数值,用于标识应用程序中不同的对象和同类对象中不同的实例,应用程序通过句柄能够访问相应的对象信息。
消息:Windows利用消息与其它的应用程序及系统进行通信。
Windows消息由三部分组成:消息号、字参数、长字参数。
消息号由事先定义好的消息名称标识;字参数和长字参数用于提供消息的附加信息,其内容与具体的消息号有关。
MSG结构在头文件中定义如下:typedef struct tagMSG{HWND hwnd;UINT message;WPARAM wParam;LPARAM lParam;DWORD time;POINT pt;} MSG, *PMSG;核心函数:WinMain函数是所有Windows应用程序的入口,功能是完成一系列的定义和初始化工作,并产生消息循环。
窗口和对话框的区别
一、窗口和对话框的区别:
1.窗口的右上角有三个按钮:分别是最小化,最大化/还原,关闭按钮;对话框右上角有二
个按钮:分别是帮助、关闭按钮
2.窗口和对话框都有标题栏,鼠标放在上面按住左键可以对窗口或话框进行移动
3.窗口的大小可以调整,对话框的大小不可以调整
二、如系统打开多个应用程序窗口:按ALT+TAB键可进行多个程序间的切换
三、系统可打开多个窗口,但当前只能对一个窗口进行操作。
处于屏幕最前面的窗口称为当前窗口。
四、关闭窗口的方法:
1.单击文件菜单中的关闭命令
2.使用快捷键ALT+F4命令
3.单击窗口右上角的关闭命令
4.在任务栏上单击右键选择关闭命令
5.单击控制菜单图标,在弹出的菜单中选择关闭命令
6.双击控制菜单图标.
五、若想改变窗口的位置,可将鼠标的指针移到窗口标题栏上并按住左键拖动鼠标,可将窗口移至屏幕任意位置。
将鼠标的指针移到窗口边框或边角上,当指针变成双箭头时,按住鼠标左键并拖动,可改变窗口的大小。
六.Windows XP提供了三种窗口的排列方式:层叠显示窗口,横向平铺显示窗口,纵向平铺显示窗口,在任务栏上单击右键可对打开的多个窗口进行这三种方式进行排列.。
VC++6.0入门【第六章 创建和使用对话框】
第6章创建和使用对话框对话框是一种用户界面,几乎每一个Windows程序都使用对话框与用户进行交互。
对话框可能是一个简单的只含有OK按钮的消息框,也可以是一个复杂的数据输入表单。
对话框上有一些方便用户输入的控件,对话框依靠这些控件与用户进行交互,其实质是一个接收消息的窗口。
在本章节我们主要讲述模式对话框和无模式对话框的原理和使用方法,下一章将详细介绍各种控件的使用。
你将学习创建一个对话框,使用对话框模板编辑一个对话框资源,并在程序中调用对话框的方法。
6.1 对话框的基本原理6.1.1 对话框的工作原理在创建一个对话框之前,我们先来了解一下对话框是如何工作的,对话框的数据来自三方面:对话框资源、对话框对象、和一个文档对象:1.对话框资源对话框资源是一个用户输入或取得数据的图形界面。
这个图形界面是使用Develop Studio的对话框编辑器在对话框模板上创建的,程序员可以在对话框模板上增加并编辑控件,生成对话框资源。
当应用程序运行时,就可以得到一个对话框。
2.对话框对象MFC使用CDialog类来描述对话框,它是CWnd类的派生类。
在CWnd类的基础上增加了数据交换的功能。
当创建一个新的对话框资源后,使用ClassWizard可以创建一个对话框类的派生类。
对话框对象实现了对话框和应用程序之间的通信。
在应用程序中定义一个对话框对象后,在对话框显示前,可以通过访问对话框对象的成员变量为一个对话框的控件初始化,在对话框关闭后,可以通过访问对话框对象的成员变量获得用户的输入数据。
3.文档对象MFC使用文档对象描述应用程序处理的数据,用户输入的数据要进一步的处理,通常要先存贮到文档对象中。
例如:一个学生记录处理的应用程序,用户通过一个对话框输入学生记录并贮存到一个文件中。
应用程序的处理顺序是:用户在对话框中输入信息,通过对话框对象得到输入信息,将输入信息整理到文档对象中,使用序列化函数将文档对象存贮到一个文件中,所以文档对象扮演了一个很重要的数据交换的角色。
窗体名词解释
窗体名词解释“窗体”(Window)指的是一种计算机图形用户界面(GUI)设计中通常采用的显示和交互小窗口。
窗体把用户输入和程序输出分隔开,它们可以借助窗体管理器(Window Manager)来运行和控制,并利用窗体中的控件,如按钮、文本框等来进行交互。
窗口是最基本的组成部分,它可以铺满整个屏幕或仅仅占据一部分,它不仅可以展示信息,还可以接受用户的输入。
窗口可分为模态窗体和非模态窗体。
模态窗体是一种需要用完才能够关闭的窗口,而非模态窗体是可以在任何时候关闭的窗口。
此外,还有一种叫做窗口类型的窗体,它只能显示一类信息,比如文件管理器只能显示文件夹,而编辑器只能编辑文本。
窗体可以分为内嵌窗体和容器窗体。
内嵌窗体是与用户界面完全绑定的窗体,它们的大小和外观都由用户界面设计者或平台提供方决定。
容器窗体则是可以由用户自行更改大小和外观的窗体。
窗体的功能是用于显示信息、接受用户输入、进行数据处理以及显示处理结果。
例如,假设有一个应用程序希望用户输入一个日期,它可以在一个窗体中创建一个日期输入控件,并在窗体中显示一个按钮,用于当用户确认输入时开始数据处理。
窗体一般由窗口管理器(Window Manager)控制,它能够跟踪和优化窗体的显示,以及响应用户的输入。
目前,窗体管理器的最基本功能包括创建、移动、改变大小、隐藏和关闭窗体。
此外,窗体管理器还可以用于处理窗体的事件,比如当某个窗体被点击后,它可以以此触发特定的动作。
窗体是计算机界面设计的基本组成部分,在现代计算机系统中几乎没有不需要窗口的应用。
窗体除了起到输入和输出的作用之外,还可以通过窗体管理器实现用户界面的更好管理。
在未来的应用开发中,窗体一定会发挥更为重要的作用。
MFC模态对话框和非模态对话框
MFC模态对话框和非模态对话框
.
分类: MFC2011-08-31 15:5425518人阅读评论(17)收藏举报
mfcdialogdelete编程
MFC中对话框有两种形式,一个是模态对话框(model dialog box),一个是非模态对话框(modeless dialog box)。
若和上面一样的方式创建一个非模态对话框:
[cpp] view plaincopy
01. CTestDialog td;
02.td.Create(IDD_DIALOG1); //创建一个非模态对话框
03.td.ShowWindow(SW_SHOWNORMAL); //显示非模态对话框
最后在所在类的析构函数中收回pTD所指向的内存:
(2)采用成员变量创建一个非模态对话框
首先在你所要编写的类的头文件中声明一个指针变量:
[cpp] view plaincopy
01.private:
02. CTestDialog *pTD;
然后再在相应的CPP文件,在你要创建对话框的位置添加如下代码:
那么,在运行时,你会发现此对话框无法显示。这是因为你声明的对话框变量td是局部变量,但这个函数返回时,td也被析构了,所以无法显示此对话框。
创建非模态对话框,必须声明一个指向CTestDialog类的指针变量,且需要显示的调用ShowWindow()才能将对话框显示出来。有两种创建方法:
[cpp] view plaincopy
01.//创建一个模态对话框
02.CTestDialog td;
03.td.DoModal();
其中CTestDialog为我自己所新建和一个对话框资源相关联的对话框类。
win32ui中的createfontdialog 参数
win32ui中的createfontdialog 参数`win32ui` 模块中的`CreateFontDialog` 函数用于创建一个字体选择对话框,让用户可以选择字体。
以下是`CreateFontDialog` 函数的参数:1. `hWnd`:父窗口句柄,通常是拥有字体选择对话框的窗口。
2. `lpFontData`:字体数据结构指针,包含对话框所需的所有字体信息。
可以使用`win32ui.FF_DONTCARE` 作为标志,表示不关心字体细节。
3. `nFontType`:字体类型,取值如下:- FC_DEFAULT:默认字体类型,表示使用系统默认字体。
- FC_SCREEN:屏幕字体类型,表示使用屏幕字体。
- FC_PRINTER:打印机字体类型,表示使用打印机字体。
4. `dwFlags`:附加标志,用于控制对话框的行为。
例如,可以使用`CDLG_FILESEL` 标志表示允许用户选择多个字体。
5. `lpTemplate`:可选参数,指向一个包含对话框模板的资源字符串。
如果未指定此参数,将使用默认的对话框模板。
6. `hInstance`:应用程序实例句柄,用于标识应用程序。
7. `lpszTitle`:可选参数,表示对话框的标题。
如果未指定此参数,将使用默认标题。
8. `lpszOkButtonText`:可选参数,表示“确定”按钮的文本。
如果未指定此参数,将使用默认文本。
9. `lpszCancelButtonText`:可选参数,表示“取消”按钮的文本。
如果未指定此参数,将使用默认文本。
以下是一个示例代码,展示了如何使用`win32ui` 模块创建一个字体选择对话框:```pythonimport win32ui# 创建字体选择对话框dlg = win32ui.CreateFontDialog(None, win32ui.FF_DONTCARE)# 显示对话框if dlg.DoModal() == win32ui.IDOK:# 获取选择的字体font_data = dlg.GetFontData()font_name = font_data['FaceName']font_size = font_data['Size']print("选择的字体:", font_name)print("字体大小:", font_size)else:print("用户取消了选择")```请注意,此示例代码仅展示了如何创建字体选择对话框,并获取用户选择的字体信息。
Win32程序基本结构
Win32程序基本结构Windows SDK笔记(一):Windows程序基本结构一、概述Windows程序具有相对固定的结构,对编写者而言,不需要书写整个过程,大部分过程由系统完成。
程序中只要按一定的格式填写系统留给客户的那一小部分。
所需要完成的有:窗口类的定义、窗口的建立、消息函数的书写、消息循环。
二、消息处理函数Windows程序是事件驱动的,对于一个窗口,它的大部分例行维护是由系统维护的。
没个窗口都有一个消息处理函数。
在消息处理函数中,对传入的消息进行处理。
系统内还有它自己的缺省消息处理函数。
客户写一个消息处理函数,在窗口建立前,将消息处理函数与窗口关联。
这样,每当有消息产生时,就会去调用这个消息处理函数。
通常情况下,客户都不会处理全部的消息,而是只处理自己感兴趣的消息,其他的,则送回到系统的缺省消息处理函数中去。
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){switch (message){case ......case ......}return DefWindowProc (hwnd, message, wParam, lParam) ;}三、窗口的建立客户需要自己建立窗口,建立后会得到系统返回的窗口句柄(HWND),后继的针对窗口的操作都针对句柄进行。
1.注册窗口类建立窗口前,需要制定好这个窗口的相关属性,最主要的就是将自己定义的消息处理函数与窗口关联,其他的属性还包括:菜单、图标等等。
这个属性指定步骤是通过指定"窗口类"来完成的。
对于自己建立的窗口,这个"窗口类"需要自己制定,也即自己填充一个WNDCLASS结构,然后向系统注册。
对于一些特殊窗口,如按钮等控件,他们的行为是系统制定好了的,所以不需要自己注册,直接使用对应的“窗口类”名称就行了。
自定义“打开文件”对话框
自定义“打开文件”对话框本页内容OpenFileDialog位置栏的系统设置RegOverridePredefKey重写位置栏项自定义的位置栏小结在Microsoft .NET Framework 中,用Windows 窗体确实可以很容易地显示“打开文件”对话框,但是结果窗口不如您通过Win32 API 创建它时易于自定义。
在Windows 2000 中,Microsoft 添加了一个不错的功能—位置栏,它是一个出现在窗口左侧的垂直工具栏,它允许您选择经常访问的文件夹。
如图1所示,位置栏包含可以使用户直接访问五个文件夹(历史、桌面、我的文档、我的电脑和网上邻居)的按钮。
图1在位置栏中选择文件夹在针对Win32 API 中的“打开文件”通用对话框进行编码时,您可以设置用来隐藏位置栏的样式。
但是,与Win32 通用对话框的其他功能相同的是,在移植到 .NET Framework 时,该设置似乎已经丢失。
创建通用对话框从来没有像在Framework 中那样容易,但是这是以降低灵活性为代价的。
另外,在托管代码中,无法在具有其他控件的情况下扩展该对话框的布局。
在本专栏中,我将着重介绍“打开文件”通用对话框的位置栏,并讨论如何自定义所显示文件夹的列表,以及如何使其特定于应用程序,甚至特定于调用。
在讨论过程中,我将回顾 .NET Framework 中用来处理注册表项的一些注册表配置单元和节点以及API。
最后,我将显示一个类,该类用代表在工具栏中显示的位置的集合来扩展OpenFileDialog 系统类。
OpenFileDialogOpenFileDialog 类表示系统提供的通用对话框,该对话框允许用户选择和打开文件。
该类从CommonDialog 继承,但是其他类不可以从它继承。
要显示对话框并选取文件,请使用以下非常简单的C# 代码:OpenFileDialog.InitialDirectory = @"c:\";OpenFileDialog.Filter = "Bitmap|*.bmp|All|*.*";OpenFileDialog.ShowDialog();请注意Filter 属性字符串需要的特殊格式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一类:模式对话框
模式对话框又分为两种
1.应用程序模式对话框-->在关闭对话框前不能切换到同一程序另一窗口
2.系统模式对话框-->关闭该对话框前无法切换到其他任何窗口(如关机时弹出的窗口)
区别五:关闭时使用的函数不同。关闭非模式对话框使用DestroyWindow函数,关闭模式对话框使用EndDialog函数
具体实例见下篇博文。
区别二:显示时间不同。CreateDialogParam在创建对话框后,会根据资源文件中的对话框模板的风格是否定义了WS_VISIBLE在决定是否显示对话框窗口。如果定义了,则显示对话框;否则,需要在后续代码中调用ShowWindow来显示对话框。而DialogBoxParam函数创建的模式对话框,不过是否定义WS_VISIBLE风格都会显示对话框
第二类:非模式对话框
区别一:创建非模式对话框要调用API函数CreatDialogParam,而创建模式对话框要调用API函数DialogBoxParam(其中创建应用程序模式对话框和系统模式对话框之间的差别是对话框模板的style参数的不同,若要创建系统模式对话框该参数必须“或”上DS_SYSMODAL标志位)
区别三:函数返回时间和返回值不同。CreateDialogParam在创建对话框后直接返回,返回值是对华框窗口的句柄;二DialogBoxParam在对话框关闭时才返回,返回值是EndDialog中的dwResult参数
区别四:使用的消息循环不同。非模式对话框在自己的消息循环中处理消息,二DialogBoxParam函数使用Windows内建的消息循环