对话框程序代码详解
vb创建对话框的方法

VB创建对话框的方法1. 简介对话框是一种常见的用户界面元素,用于与用户进行交互和获取输入。
在VB (Visual Basic)中,创建对话框是一项重要的任务,可以通过几种不同的方法实现。
本文将介绍在VB中创建对话框的几种常用方法,并提供详细的步骤和示例代码。
2. VB中创建对话框的方法在VB中,创建对话框的方法主要包括以下几种:2.1 使用MessageBox.Show方法创建消息框MessageBox.Show方法是VB中创建对话框最简单和常用的方法之一。
该方法可以创建一个简单的消息框,用于显示一条消息并等待用户响应。
步骤:1.打开VB开发环境,创建一个新的Windows Forms应用程序项目。
2.在Form1的代码文件中,添加一个按钮控件,并为按钮的Click事件添加以下代码:Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Cl ickMessageBox.Show("Hello, World!", "提示", MessageBoxButtons.OK, MessageBoxI rmation)End Sub解释:上述代码中,MessageBox.Show方法的第一个参数是要显示的消息文本,第二个参数是对话框的标题,第三个参数指定了按钮的类型(这里使用了OK按钮),第四个参数指定了消息框的图标(这里使用了信息图标)。
结果:当用户点击按钮时,将显示一个带有消息文本”Hello, World!“的消息框,标题为”提示”,并包含一个OK按钮和一个信息图标。
2.2 使用InputBox函数创建输入框InputBox函数是VB中另一种创建对话框的方法,它可以显示一个输入框,用于获取用户的输入。
步骤:1.打开VB开发环境,创建一个新的Windows Forms应用程序项目。
messagebox 用法详解与实例

文章主题:messagebox 用法详解与实例1. 什么是messagebox?messagebox 是一种常用的对话框控件,用于在计算机应用程序中向用户显示信息和提示,通常包括消息文本和一些按钮供用户选择。
2. messagebox 的基本用法在Python中,可以使用Tkinter库中的 messagebox 模块来创建对话框。
常见的对话框类型有:showinfo、showwarning、showerror、askquestion、askyesno等。
下面通过几个实例来具体介绍。
3. 实例一:showinfo使用 showinfo 函数可以创建一个包含指定信息的信息对话框,示例代码如下:```pythonfrom tkinter import messageboxmessagebox.showinfo("Wee", "欢迎来到我的程序!")```运行程序后,会弹出一个标题为“Wee”的对话框,内容是“欢迎来到我的程序!”4. 实例二:askquestion使用 askquestion 函数可以创建一个包含指定问题的询问对话框,示例代码如下:```pythonfrom tkinter import messageboxresponse = messagebox.askquestion("确认", "您确定要退出程序吗?")if response == "yes":print("用户选择退出程序。
")else:print("用户选择取消。
")```运行程序后,会弹出一个标题为“确认”的对话框,内容是“您确定要退出程序吗?”用户点击“是”或“否”按钮后,程序会相应地输出相应的信息。
5. messagebox 的个人观点和理解在我的实际开发中,messagebox 是一个非常实用的工具,可以方便地与用户进行交互。
10 对话框编程

运行DLG02工程为什么没有显示对话框呢?看下
面的分析。
解决方法一:参见例3: 见工程DLG02_01。
1。将newmyDlg对象定义为视图类CDLG02View的成员变量. 2。对run菜单的消息响应函数void CDLG02View::OnRun01()进行修改。 3。重写“确定”或“取消”按钮的消息响应函数,添加DestroyWindow()函 数。
2)消息映射
分析myNewDlg01类:
1. 构造函数; 2. DoDataExchange函数:用来完成对话框数据的交换 和校验。
观察:// NOTE: the ClassWizard will add DDX and DDV calls here void myNewDlg01::DoDataExchange(CDataExchange* pDX)
void myDlg02::OnOK() { // TODO: Add extra validation here DestroyWindow(); //CDialog::OnOK(); // 注意此处必须注释掉,为什么? } void myDlg02::OnCancel() { // TODO: Add extra cleanup here DestroyWindow(); //CDialog::OnCancel(); // 注意此处必须注释掉,为什么? }
对话框输入焦点的调整,即tab键顺序的调整。
点击菜单“布局”-“Tab顺序”。
五、一些简单实例。
MFC02 MFC03 MFC04 MFC05
六、通用控件的使用:
进度指示、滑竿条、微调按钮、列表控件、树状控件等5个控件。 ClassWizard不支持这些通用控件的成员变量,我们必须在OnInitDialog 和OnOk函数中添加代码,来初始化并且读取控件数据。
2 C MFC对话框程序设计示例详解

#include "stdafx.h" //VC++程序要包含这个文件,而且要先包含 #include "123.h" //"123.h"头文件放在(#include "stdafx.h")的后面 #include "string" // 添加包含字符处理库函数的头文件
//以下为自己添加的预处理语句--------
#include <fstream> //文件输入、输出流类对象的使用
图 2.4 在弹出的“属性”对话框中指定该控件的 ID(名称)、标题(可见内容)
图 2.5 按照图 2.1~2.4 的方法画出一个编辑框(EDIT),并在它的“属性”对话框中暂时只 要指定该控件的 ID(名称)
图 2.6 按照图 2.1~2.4 的方法画出一个命令按钮(BUTTON),并在它的“属性”对话框中 指定该命令按钮控件的 ID(名称)、标题(可见内容)
图 4.1 对话框源文件 123Dlg.cpp 的初始内容
4.1 头文件 123.h (其内容是定义一个描述学生信息的“类”:c123)
以下只给出该文件自己写的那些代码,而系统生成的代码在此省略。
#include <string> // 添加包含字符处理库函数的头文件---此句加在文件最前面 ……… //这里略去的是系统自动生成的代码
符串更加简单、方便。
3.3 为每个命令按钮(Button)设置消息映射(Message Maps) 以“添加学生”按钮设置鼠标单击的消息映射为例:在图 3.1 中,选“Message Maps”
六、windows对话框程序设计

从Retry 和 Ignore 按钮的消息框 含有停止图标的消息框 含有一个 OK 按钮的消息框 含有 OK 和 CANCLE 按钮的消息框 含有 YES、NO 和 CANCLE 按钮的消息框 6
3. 构造对话框消息处理函数
对话框接收的消息都在相应的对话框消息处理函数中处理 BOOL CALLBACK DlgProc(……,……,……,……) { switch(message) { case WM_INITDIALOG:return 1; case WM_COMMAND switch (LOWORD (wParam )) { case …;break; case …;break; … } break; } return 0; }
……
LRESULT CALLBACK WndProc(……,……,……,……) { switch(message) {case WM_COMMAND: switch(LOWORD(wParam)) {case IDM_NEW: break; case IDM_OPEN: MessageBox(hwnd,"文件已经打开!","文件打开",MB_OK);break; case IDM_SAVE: MessageBox(hwnd,"文件保存成功!","文件保存",MB_OK);break; case IDM_SAVEAS: break; case IDM_CLOSE: break; case IDM_EXIT: SendMessage(hwnd,WM_DESTROY,0,0); break; case IDM_CUT: break; case IDM_COPY: break; 创建对话框 case IDM_PASTE: break; case IDM_DELETE: break; case IDM_ABOUT: DialogBox(hInst,"About",hwnd,(DLGPROC)DlgProc); break; } break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd,message,wParam,lParam); } return 0; 12 }
python 对话框的创建及调用

python 对话框的创建及调用一、前言Python 是一种高级编程语言,它的设计目标是让程序员更容易编写清晰、逻辑性更强的代码。
Python 有着简单易学的语法,同时也是一种功能强大的编程语言。
在 Python 中,我们可以使用对话框来与用户进行交互,这样可以使程序更加友好、实用。
本文将介绍如何使用Python 创建对话框,并调用这些对话框。
二、创建基本对话框1. 创建一个空白窗口在 Python 中,我们可以使用 tkinter 模块来创建对话框。
下面是一个简单的示例代码:```import tkinter as tkroot = ()root.mainloop()```这段代码创建了一个空白窗口,并进入了主循环(mainloop)。
2. 添加标签和按钮接下来,我们可以向窗口中添加标签和按钮。
标签可以用来显示文本信息,而按钮则可以用来触发事件。
下面是一个示例代码:```import tkinter as tkroot = ()label = bel(root, text="Hello, World!")label.pack()button = tk.Button(root, text="Click me!")button.pack()root.mainloop()```这段代码创建了一个带有标签和按钮的窗口。
当用户点击按钮时,程序将触发相应的事件。
3. 创建对话框在 Python 中,我们可以使用 Toplevel 类来创建对话框。
下面是一个示例代码:```import tkinter as tkroot = ()def open_dialog():dialog = tk.Toplevel(root)label = bel(dialog, text="This is a dialog")label.pack()button = tk.Button(root, text="Open Dialog",command=open_dialog)button.pack()root.mainloop()```这段代码创建了一个按钮,当用户点击按钮时,程序将打开一个对话框,并在对话框中显示一条消息。
对话框编程(修改版)
Example:
CNonMdlDlg * m_pNameDlg;
bool m_bActive; m_pNameDlg = new CNonMdlDlg; ……
m_bActive = TRUE;
CDialog::Create(CNonMdlDlg::IDD); …… m_bActive = FALSE; DestroyWindow(); …… m_pNameDlg->SetActiveWindow(); …… delete m_pNameDlg;
4.2.3 属性页对话框 属性表的功能都被封装在一对MFC类中: CPropertySheet和CPropertyPage。 CPropertySheet代表属性表自身,是从CWnd 派生而来。 CPropertyPage代表属性表的页, 是从CDialog派生而来。
创建属性表的步骤
1、针对属性表的每一页创建一个对话框模板,定义页的 内容和特性。将对话框标题设成你希望在属性表页上方标 签中显现的标题。 2、针对属性表的每一页由CPropertyPage派生出一个类 似对话框的类。 3、由CPropertySheet定义一个属性表对象。将属性表 类和第二步中得到的属性表页类实例化。在构造函数中利 用CPropertySheet::AddPage将各页按期望中的显示顺 序添加到属性表中。 4、调用属性表的DoModal函数将属性表显示在屏幕上 (也可以像对话框那样建立无模式的属性表)。
4.2.1 模态对话框(Modal Dialog Box)
Example: CMyDialog dlg; dlg.DoModal();
垄断消息
OK按钮消息
载入对话框模板
OnInitDialog()
对话框编程
第七章Dialog一、用户对话框:用户在使用应用程序时,可以对控件进行输入、输出操作,而控件是通过对话框的数据交换机制与对话框进行数据交换的,本节主要介绍对话框数据交换与验证。
1.数据交换对话框数据交换(DDX,Dialog Data Exchange)用于对话框及其相关控件的初始化,并实现控件与对话框之间的数据交换。
DDX机制的实现函数语法如下:void nDlg::DoDataExchange( CDataExchange* pDX ){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(nDlg)DDX_Custom(pDX, nIDC, field);//}}AFX_DATA_MAP}参数说明:nDlg:是进行数据交换机制的对话框类。
DDX_Custom:DDX函数,使用的函数根据进行数据交换时成员变量的数据类型和控件决定。
pDX:是一个指向CDataExchange对象的指针。
nIDC:表示进行数据交换的控件ID。
field:表示对话框类中和控件进行关联的成员变量。
在对话框中的数据需要进行交换时,DoDataExchange函数就被调用进行数据交换。
但是还需要调用函数UpdateData来实现数据的更新,UpdateData函数语法如下:BOOL UpdateData( BOOL bSaveAndValidate = TRUE );参数说明:bSaveAndValidate:该参数是一个标志,取值如下:l 当参数值为TRUE时,就用对话框界面上显示的值来设置对话框类的成员变量的值。
l 当参数值为FALSE时,则按照对话框类的成员变量的值来更新对话框界面上显示的值。
一般情况下,数据交换只在对话框初始化时才发生,所以在对话框类中的其他函数如果要在设置成员变量以后,及时的显示或者获取对话框上最新的输入值,就必须显式地调用UpdateData函数。
2.数据验证对话框数据验证(DDV,Dialog Data V alidation)用于验证对话框输入数据的有效性。
Autolisp自定义对话框代码要点解析
Autolisp自定义对话框代码要点解析本文针对自定义对话框设计实现做一简单分析,主要阐述设计思路、实现方法、使用方法及存在问题等方面内容一、设计目的本对话框的设计主要用于两个方面:一是当需要对批量的图元进行操作,同时需要修改线型、线宽和颜色时,本对话框可以获取一个串行,可以方便对批量的图元进行程序化处理;二是采用幻灯片的方面选择线型,直观地预览线型样式,方面对CAD不太熟悉的用户设置绘图的线型、线宽和颜色,简化操作。
二、设计思路1.线型选择采用image_button控件显示幻灯片,能预览线型样式和名称。
2.线宽选择采用下拉列表控件popup_list,列表所有可用的标准线宽供用户选择。
3.颜色选择采用image_button控件列出10种常用的标准色:”红”、”黄”、”绿”、”青”、”蓝”、”洋红”、”白”、”黑”、”ByLayer”、”ByBlock”供选择,并用image_button控件显示当前颜色和所选择颜色作对比。
4.用户可以输入参数来确定”Accept”的响应类型,可返回一个串行数据供用户调用,也可以设置文档的默认线型、线宽和颜色。
对话框实现界面如下图所示:界面的DCL代码见《Autolisp线型选择自定义对话框文件》一文。
三、实现方法1.线型的样式预览与响应下述代码显示一张幻灯片到image_button控件:(defun showsld($key;控件的键值$ltname;线型名称,与幻灯片同名%bclr;幻灯片背景色$callback;响应动作/$callStr width height)(setq width(dimx_tile$key)height(dimy_tile$key))(if(not%bclr)(setq%bclr0))(start_image$key)(fill_image00width height%bclr)(slide_image00(-width1)(-height1)$ltname)(setq$callstr(strcat"("$callback"\""$ltname"\")"))(action_tile$key$callstr)(end_image))(defun SldAction($ltype)(set_tile"line_type"$ltype)(princ))上述代码的调用方法:本例中第页显示4张幻灯片,即有4个image_button控件,遍历线型列表数据,获取4个线型名称,这4个名称预先创建好了幻灯片文件,保存在SLd文件夹中。
MFC 对话框编程 -- 总结
MFC 对话框编程 -- 总结一、创建对话框对象1.首先利用资源编辑器创建对话框资源,并针对该对话框资源定义一个对话框类:class CTestDlg : public CDialog2.创建话话框对象模态对话框的创建:如:CTestDlg dlg;dlg.DoModal();非模态对话框创建:如:CTestDlg dlg;dlg.Create(IDD_DIALOG, this);但这样是得不到一个正常显示的非模态对话框的。
因为模态与非模态对话框的实现方式并不相同,这里我们还要注意几点。
非模态对话框创建完成后是隐藏着的,必须调用ShowWindow来进行显示。
对于模态对话框,当执行到DoModal 函数以创建对话框时,程序会暂停执行,直至模态对话框关闭。
所以创建模态对话框可以采用局部对象。
但是,对于非模态对话框,当执行Create函数时并不会暂停执行,当执行到大括号"}后Dlg局部对象被销毁生命周期结束,于是异常出现了。
解决方法有两个:一、在View类中定义一个CTestDlg 成员变量。
二、动态创建一个CTestDlg 变量,并重写CTestDlg 类的 PostNcDestroy函数,在该函数里销毁对象 delete this;无论创建的是模态对话框,还是非模态对话框,当我们单击确定或取消按钮后对话框都会消失。
但这时低层的操作却是不同的。
对于模态对话框,此时对话框对象的确是被销毁了,但对于非模态对话框,这时只是隐藏起来不再显示。
这需要我们自己调用DestoryWindow函数来进行销毁工作。
这时我们必须重写 CTestDlg 的 OnOK 、 OnCancel 两个函数(这两个是基类CDialog的虚函数),在这两个函数内调用DestroyWindow函数,并注意不再调用基类CDialog相应的函数。
正确地创建非模态对话框的代码如下:CTestDlg *pDlg = new CTestDlg;pDlg->Create(IDD_DIALOG, this);pDlg->ShowWindow(SW_SHOW);同时,在CTestDlg 类的 PostNcDestroy函数中销毁对象:delete this;二、动态创建按钮1. 在对话框类CTestDlg 中定义一个 CButton 类对象,作为其成员变量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
◦ App类中,通过下面的三大宏(先不必管什么意思), 实现该类的消息映射和响应。
在.h文件中
在.cpp文件中
◦ 实际上,MFC框架程序中所有框架类都有这三大宏。
12
对话框程序的文件结构
◦ App类 ◦ Dlg类
MFC程序执行流程 MFC中的消息响应过程 控件的手工操作和使用
13
对话框数据 通过类向导添加的 成员变量
CDlg的派生类
程序资源头文件 程序资源文件 程序资源文件夹
所有的源文件和头文件均 成对出现,且均是MFC类 库中类的派生类型。
Resource.h W1_2.rc res
程序“资源”。定义了程 序的外观、以及各个对象 对应的资源编号。将逐步 深入介绍。
4
ReadMe.txt W1_2.clw W1_2.dsp W1_2.dsw W1_2.ncb W1_2.opt W1_2.plg
6
对象类
CObject CCmdTarget CException CGdiObject CMenu CBitmap 位图类 CBrush 画刷类 CFont 字体类 CPen 画笔类
文档类
CWinThread CWinApp CDocument CDocItem CFile
文件类
CDC
菜单类
CDatabase
◦ 在程序位置改变、需要刷新页面时,调用OnPaint() ◦ 其他先不必理会。
19
20
预编译头文件 StdAfx.h 资源描述文件*.rc 图标资源文件*.ico 资源头文件Resource.h
定义了 所有资源的ID
21
Dlg程序中:
◦ App类中的InitInstance可以看作程序的main,实现程序启动和窗 口创建。 ◦ Dlg 类中的OnInitialDialog可以看作初始化函数,用来在程序运 行开始前,对程序进行设置。
重载自基函 数,数据交 换函数。
14
程序图标句柄
该类的所有消息响 应函数
三大宏:消息映射
15
变量的初始化
Dlg类的构造函数中自动初始化了我们添加的 各个变量,最后调用全局函数LoadIcon,装载 默认的程序图标
16
◦ 著名的MFC的DDX机制:每当通过ClassWizard为控件添加 一个变量时,就会自动添加该变量的一个DDX到该函数中。
对话框类
CColorDialog CFileDialog
CFindReplaceDialog
滚动条类
CFormView
简单数据 类型
CFontDialogFra bibliotek控件类
7
由框架生成的类的第一部分,重载基类虚函数,这里 只重载了一个函数: InitInstance()
由框架生成的类的第二部分,类的实现,这部分是用 来响应消息的。
应用程序类 窗口类
CWnd CFrameWnd CControlBar CView
图形设备接口类
数据库类
视图类 控制条类
CDialogBar CStatusBar CToolBar CDialog CCtrlView CEditView CListView CRichEditView CTreeView CScrollView
MFC全局函数,获取当前程序中 App类对象指针
通过多态,执行App类对象的 InitInstance函数
Run函数实际上启动了消息循环。 通过MFC消息响应宏,实现各个 类中消息的响应。 在调试时,直接F10,就能看到详 细过程。演示一下。
23
10
◦ App类的构造函数和InitInstance()是框架中最先被 调用的,起到类似于main()的作用。 ◦ 在初始化函数InitInstance中声明程序主窗口对象
CW2_3Dlg dlg ; 并且创建并显示这个窗口。
◦ App.cpp文件中声明了唯一的全局App类对象: CW2_3App theApp;
基于对话框的程序,其核心是由 CWinApp和CDialog类中派生出来的 两个类。 CAnimateCtrl CButton 对话框程序的编程,可以看作是对两 CPoint 个派生类的编程。 CRect
CSize 其中,主要是以消息响应函数的形式, CString 在CDialog类的派生类中编写代码。 CTime
◦ DDX实现控件资源ID与成员变量的“绑定”。 ◦ 每当调用updatedata()函数,就会调用DoDataExchange().
17
Dlg类中的所有消息响应函数都被放在这里。
18
这几个函数是MFC框架中默认为对话框程序添加的系统消 息响应函数。
◦ 程序Create一个对话框后,首先调用对话框的构造函数, 接着就调用OnInitDialog函数。
8
这一部分,是用来实现消息映射、消息响应 的。暂时先不用去明白其原理。以后会讲到。
有且仅有一个的程序对象。
9
一些选项,不用理会
声明一个Dialog类对象。 m_pMainWnd是App的基类中的 一个指针对象。 调用DoModal()方法,完成窗 口的创建、显示。
我们在后续课程中会学到该方 法。这里仅了解即可。
CBitmapButton CComboBox CEdit CHeaderCtrl CHotKeyCtrl CListBox CCheckListBox CDragListBox CListBox CProgressCtrl CRichEditCtrl CScorllBar CSliderCtrl CSpinButtonCtrl CStatic CStateBarCtrl CTabCtrl CToolBarCtrl CToolTipCtrl CTreeCtrl
但:“可以看作” ≠ “就是”
◦ MFC的Main函数叫做 AfxWinMain。它被作为MFC的全局函数, 独立于MFC类库存在,用户无法修改(因此也没有必要学习)。
◦ 在程序启动以后,首先调用AfxWinMain,然后找到唯一的App类 对象,调用其InitInstance,启动程序。
22
int AFXAPI AfxWinMain(…) { //... CWinApp* pApp = AfxGetApp(); if ( ! pThread->InitInstance() ) { //... error proc } nRCode = pThread->Run(); } //...
自动生成的说明文件 类向导使用的文件 工程文件 项目文件(启动) 支持ClassView的文件 配置文件 日志文件
这些都是自动生成的,与 程序功能和编译无关,也 不需要知道它们的内部结 构,记住一个原则即可: 原则2:只修改 *.cpp 和 *.h文件,其他一概不理。
5
我们自己添加 的函数、变量。
Windows 程序设计
于东 2015,第2周
对话框程序的文件结构 对话框程序执行流程
2
CDialog类的派生类 编程的主要内容
3
用 Appwizard生成对话框程序将自动生成:
预编译头文件 CWinApp的派生类 不可缺少,一般不需要修改
StdAfx.cpp StdAfx.h W1_2.cpp W1_2.h W1_2Dlg.cpp W1_2Dlg.h