对话框程序代码详解

合集下载

Android开发之对话框案例详解(五种对话框)

Android开发之对话框案例详解(五种对话框)

Android开发之对话框案例详解(五种对话框)下⾯通过实例代码给⼤家分享5种android对话框,具体内容详情如下所⽰:1 弹出普通对话框 --- 系统更新2 ⾃定义对话框-- ⽤户登录3 时间选择对话框 -- 时间对话框4 进度条对话框 -- 信息加载..5 popuWindow对话框1 弹出普通对话框 --- 系统更新//弹出普通对话框public void showNormalDialog(View v) {AlertDialog.Builder builder = new Builder(this);//设置Dialog的图标builder.setIcon(R.drawable.ic_launcher);//设置对话框的标题builder.setTitle("更新");//设置messagebuilder.setMessage("发现新版本是否更新?");//确定按钮取消按钮builder.setPositiveButton("确定",new OnClickListener() {/*** 点击确定按钮回调该⽅法*/@Overridepublic void onClick(DialogInterface dialog, int which) {//到服务器去下载新的版本 duration单词意思:时长Toast.makeText(MainActivity.this, "开始下载新版本", Toast.LENGTH_SHORT).show();}});builder.setNegativeButton("取消", new OnClickListener() {/*** 点击取消按钮回调该⽅法*/@Overridepublic void onClick(DialogInterface dialog, int which) {//到服务器去下载新的版本 duration单词意思:时长Toast.makeText(MainActivity.this, "不需要更新", Toast.LENGTH_SHORT).show();}});builder.setNeutralButton("下⼀次", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//到服务器去下载新的版本 duration单词意思:时长Toast.makeText(MainActivity.this, "下⼀次吧", Toast.LENGTH_SHORT).show();}});//通过建造这⽼构建⼀个对话框Dialog dialog = builder.create();//显⽰dialog.show();}2 ⾃定义对话框-- ⽤户登录布局⽂件:user_name_dialog.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:padding="10dip"android:orientation="vertical" >android:layout_width="match_parent"android:layout_height="wrap_content"android:text="登录信息"android:gravity="center"android:textAppearance="?android:attr/textAppearanceLarge" /> <TextViewandroid:id="@+id/tv_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="⽤户名:" /><EditText android:id="@+id/et_name"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输⼊⽤户名"/><TextViewandroid:id="@+id/tv_pwd"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="密码:" /><EditText android:id="@+id/et_pwd"android:layout_width="match_parent"android:layout_height="wrap_content"android:inputType="textPassword"android:hint="请输⼊密码"/><requestFocus /><Buttonandroid:id="@+id/btn_confirm"android:layout_width="150dip"android:layout_height="wrap_content"android:layout_gravity="center"android:text="登录" /><Buttonandroid:id="@+id/btn_cancel"android:layout_width="150dip"android:layout_height="wrap_content"android:layout_gravity="center"android:text="取消" /></LinearLayout>java代码://⾃定义对话框Dialog cus_dialog ;public void showCustomDialog(View v){AlertDialog.Builder builder = new Builder(this);// 布局填充器LayoutInflater inflater = LayoutInflater.from(this);View view = inflater.inflate(er_name_dialog, null);// 设置⾃定义的对话框界⾯builder.setView(view);// 获取⽤户名密码final EditText name = (EditText) view.findViewById(R.id.et_name); final EditText pwd = (EditText) view.findViewById(R.id.et_pwd);Button btn_confirm = (Button) view.findViewById(R.id.btn_confirm); btn_confirm.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO ⾃动⽣成的⽅法存根if(name.getText().toString().trim().equals("abc")){showToastMsg("⽤户名正确");// 对话框消失cus_dialog.dismiss();}else{showToastMsg("⽤户名错误");}}});Button btnCancel = (Button) view.findViewById(R.id.btn_cancel); btnCancel.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 对话框消失cus_dialog.dismiss();}cus_dialog = builder.create();cus_dialog.show();}3 时间选择对话框 -- 时间对话框// 时间选择对话框public void showTimePickerDialog(View v){Calendar sysDate = Calendar.getInstance();//设置系统时间sysDate.setTimeInMillis(System.currentTimeMillis());int hour = sysDate.get(Calendar.HOUR_OF_DAY);int minute = sysDate.get(Calendar.MINUTE);TimePickerDialog time = new TimePickerDialog(this,new OnTimeSetListener() {@Overridepublic void onTimeSet(TimePicker view, int hourOfDay, int minute) {// TODO ⾃动⽣成的⽅法存根showToastMsg(" hourOfDay:" + hourOfDay + " minute:" + minute);}}, //callBack 选择时间后的回调⽅法hour,//hourOfDay 当前系统时间minute,//hourOfDay 当前系统时间true);//是否24⼩时制time.show();}4 进度条对话框 -- 信息加载../*** 进度条对话框* @param v*/public void showProgressDialog(View v){final ProgressDialog progress = new ProgressDialog(this);progress.setProgress(R.drawable.img2);progress.setTitle("标题");progress.setMessage("加载中...");//样式1 进度条样式progress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//样式2 有加载图标//progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);//最⼤progress.setMax(100);//当前progress.setProgress(50);progress.setButton("确定", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO ⾃动⽣成的⽅法存根showToastMsg("确定按钮");}});progress.setButton2("取消", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO ⾃动⽣成的⽅法存根showToastMsg("取消按钮");}});progress.show();new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubint i = 0;while (i < 100) {try {Thread.sleep(200);// 更新进度条的进度,可以在⼦线程中更新进度条进度progress.incrementProgressBy(5);// progress.incrementSecondaryProgressBy(10);//⼆级进度条更新⽅式 i += 5;} catch (Exception e) {// TODO: handle exception}// 在进度条⾛完时删除Dialogprogress.dismiss();}}).start();}5 popuWindow对话框Button btn_popu;//popuWindow对话框public void showPopuWindow(View v){btn_popu = (Button) v;// 设置布局View view = LayoutInflater.from(this).inflate(yout.pop_window, null);PopupWindow window = new PopupWindow(this);window.setContentView(view);window.setWidth(360);window.setHeight(200);int[] location = new int[2];// 获取按钮坐标btn_popu.getLocationInWindow(location);window.setFocusable(true);window.setBackgroundDrawable(getResources().getDrawable(R.drawable.back_null));window.showAtLocation(btn_popu, Gravity.LEFT |Gravity.TOP , location[0]+ btn_popu.getWidth(), location[1] + 0 );//showToastMsg("" + (location[0]+ btn_popu.getWidth())+" "+ (location[1] + btn_popu.getHeight() / 2));ImageView img_start = (ImageView) view.findViewById(R.id.img_start);img_start.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO ⾃动⽣成的⽅法存根showToastMsg("点击了启动");}});}总结以上所述是⼩编给⼤家介绍的详解Android开发之对话框案例详解(五种对话框),希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。

C#中的对话框

C#中的对话框

用C#编写的弹出选择对话框程序。

一、基于WINFORM下的选择对话框在WINFORM下,我们可以利用系统的对话框(MessageBox)来实现,具体思路是读取MessageBox的返回值(YES或NO)来达到对操作的控制。

下面是一个演示程序代码代码如:private void button1_Click(object sender, System.EventArgs e){label1.Text="";DialogResult MsgBoxResult;//设置对话框的返回值MsgBoxResult = MessageBox.Show("请选择你要按下的按钮",//对话框的显示内容"提示",//对话框的标题MessageBoxButtons.YesNo,//定义对话框的按钮,这里定义了YSE和NO两个按钮MessageBoxIcon.Exclamation,//定义对话框内的图表式样,这里是一个黄色三角型内加一个感叹号MessageBoxDefaultButton.Button2);//定义对话框的按钮式样if (MsgBoxResult == DialogResult.Yes)//如果对话框的返回值是YES(按"Y"按钮){bel1.ForeColor = System.Drawing.Color.Red;//字体颜色设定label1.Text=" 你选择了按下”Yes“的按钮!";}if(MsgBoxResult == DialogResult.No)//如果对话框的返回值是NO(按"N"按钮){bel1.ForeColor = System.Drawing.Color.Blue;//字体颜色设定label1.Text=" 你选择了按下”No“的按钮!";}}代码运行后的结果如图1所示:当按动对话框的“是”按钮时,显示红色字体“你选择了按下“YES”的按钮”字样,如果你按动了对话框的“否”按钮将显示蓝色字体的“你选择了按下“NO”的按钮”字样。

对话框程序代码详解

对话框程序代码详解
11
◦ 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

messagebox 用法详解与实例

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 是一个非常实用的工具,可以方便地与用户进行交互。

简易聊天对话框(源码)

简易聊天对话框(源码)

简易聊天对话框(源码) 今天看了⼏个JS的视频,视频中布置了⼀个编写⼀个简易聊天对话框的任务,没有涉及到Ajax.主要实现了切换头像模拟两⽅的聊天情况,样式⽐较简单,后期可以进⾏美化。

需要注意的地⽅是我是⽤的⼀个div标签来实现元素的添加,这样更利于样式的设置,每添加⼀个对话框需要清除⼀下浮动,不然会出现连续⼏个对话框出现在⼀⾏的现象。

<!DOCTYPE html><html><head><meta charset="utf-8"><title></title><style type="text/css">.box{width:300px;height:400px;margin: 20px auto;border: solid 1px black}.box .cont{height: 300px;border-bottom: solid 1px black;overflow: auto;}.cont div{max-width:220px;margin: 4px;padding: 4px;border-radius: 6px;clear: both;word-wrap: break-word;} /*给div设置最⼤宽度并且使⽤break-word使div内容⾃动换⾏*/.cont div:nth-child(2n){background: skyblue;float: left} /*设置点击发送次数为偶数时,div左浮动*/.cont div:nth-child(2n-1){background: orange;float: right} /*设置点击发送次数为奇数时,div右浮动*/.box .btns{height: 99px}.btns *{height: 99px;border: none;padding: 0;margin: 0;background: none;float: left;}#txt{width: 260px;padding: 20px;box-sizing: border-box}#send{width: 40px;border-left: solid 1px black;}</style></head><body><div class="box"><div class="cont"></div><div class="btns"><textarea id="txt"></textarea><input type="button" value="发送" id="send" /></div></div></body><script>var oTxt = document.getElementById("txt");var oSend = document.getElementById("send");var oCont = document.querySelector(".cont");// var oCont = document.getElementsByClassName("cont")oSend.onclick = function(){ // 创建oSend的点击事件var odiv = document.createElement("div"); odiv.innerHTML = oTxt.value; // 把txt输⼊框内的内容赋值给divoCont.appendChild(odiv); //把创建的div插⼊到cont标签⼦元素内odiv.scrollIntoView(); //让当前的元素滚动到浏览器窗⼝的可视区域内oTxt.value = ""; //清除⽂本框内容}</script></html>。

2 C MFC对话框程序设计示例详解

2 C  MFC对话框程序设计示例详解
4.2 源文件 123.cpp (对类 c123 的构造函数进行实现)
#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对话框程序设计

标 识 MB_ABORTRETRYIGNORE MB_ICONSTOP MB_OK MB_OKCANCLE MB_YESNOCANCLE
从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)用于验证对话框输入数据的有效性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
由框架生成的类的第二部分,类的实现,这部分是用 来响应消息的。
.
8
这一部分,是用来实现消息映射、消息响应 的。暂时先不用去明白其原理。以后会讲到。
有且仅有一个的程序对象。
.
9
一些选项,不用理会
声明一个Dialog类对象。 m_pMainWnd是App的基类中的 一个指针对象。
调用DoModal()方法,完成窗 口的创建、显示。
Windows 程序设计
于东 2015,第2周
.
对话框程序的文件结构 对话框程序执行流程
.
2
CDialog类的派生类 编程的主要内容
.
3
用 Appwizard生成对话框程序将自动生成:
StdAfx.cpp StdAfx.h
预编译头文件
不可缺少,一般不需要修改
W1_2.cpp W1_2.h W1_2Dlg.cpp W1_2Dlg.h
我们在后续课程中会学到该方 法。这里仅了解即可。
.
10
◦ App类的构造函数和InitInstance()是框架中最先被 调用的,起到类似于main()的作用。
◦ 在初始化函数InitInstance中声明程序主窗口对象
CW2_3Dlg dlg ; 并且创建并显示这个窗口。
◦ App.cpp文件中声明了唯一的全局App类对象: CW2_3App theApp;
◦ Dlg 类中的OnInitialDialog可以看作初始化函数,用来在程序 运行开始前,对程序进行设置。
但:“可以看作” ≠ “就是”
◦ MFC的Main函数叫做 AfxWinMain。它被作为MFC的全局函数, 独立于MFC类库存在,用户无法修改(因此也没有必要学 习)。
◦ DDX实现控件资源ID与成员变量的“绑定”。
◦ 每当调用updatedata()函数,就会调用DoDataExchange().
.
17
Dlg类中的所有消息响应函数都被放在这里。
.
18
这几个函数是MFC框架中默认为对话框程序添加的系统消 息响应函数。
◦ 程序Create一个对话框后,首先调用对话框的构造函数, 接着就调用OnInitDialog函数。
CWinApp的派生类 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
文档类
CWinThread
CDocument
CWinApp
CDocItem
CException
CFile
文件类
CDC
CGdiObject
CMenu
菜单类
CDatabase
CBitmap 位图类 CBrush 画刷类 CFont 字体类 CPen 画笔类
应用程序类
CScrollView
滚动条类
CScorllBar CSliderCtrl CSpinButtonCtrl
CStatic CStateBarCtrl
CTime
简单数据 类型
CFormView
CTabCtrl CToolBarCtrl
CToolTipCtrl
CTreeCtrl
控件类 .
7
由框架生成的类的第一部分,重载基类虚函数,这里 只重载了一个函数: InitInstance()
CListBox
CRect
CListView
CCheckListBox
CRichEditView 其中,主要是CCLDirs以atBgLo消xistBo息x 响应函数的CS形ize 式,
CTreeView 在CDialog类CCRP的ricohgEre派dsistCC生ttrrll 类中编写代C码Stri。ng
窗口类
CWnd
图形设备接口类 数据库类
基于对话框的程序,其核心是由 CWinApp和CDialog类中派生出来的
CFrameWnd
CControlBar
控制条类
CDialogBar CStatusBar CToolBar
CDialog
对话框类
CColorDialog CFileDialog
CFindReplaceDialog
CFontDialog
CView
视图类
两个类。 CAnimateCtrl CButton CBitmapButton
CCtrlView CEditView
对 个话 派框 生程 类序 的CCC的 编HCHooCemtaKE编 程dbdeeoiyrtBCC程。ottrrxll ,可以看作是CPo对int两
◦ 在程序位置改变、需要刷新页面时,调用OnPaint()
◦ 其他先不必理会。
.
ቤተ መጻሕፍቲ ባይዱ19
.
20
预编译头文件 StdAfx.h 资源描述文件*.rc 图标资源文件*.ico 资源头文件Resource.h
定义了 所有资源的ID
.
21
Dlg程序中:
◦ App类中的InitInstance可以看作程序的main,实现程序启动和 窗口创建。
自动生成的说明文件 类向导使用的文件 工程文件 项目文件(启动) 支持ClassView的文件 配置文件 日志文件
这些都是自动生成的,与 程序功能和编译无关,也 不需要知道它们的内部结 构,记住一个原则即可:
原则2:只修改 *.cpp 和 *.h文件,其他一概不理。
.
5
我们自己添加 的函数、变量。
.
11
◦ App类中,通过下面的三大宏(先不必管什么意思), 实现该类的消息映射和响应。
在.h文件中
在.cpp文件中
◦ 实际上,MFC框架程序中所有框架类都有这三大宏。
.
12
对话框程序的文件结构
◦ App类 ◦ Dlg类
MFC程序执行流程
MFC中的消息响应过程
控件的手工操作和使用
.
13
对话框数据
通过类向导添加的 成员变量
重载自基函 数,数据交 换函数。
.
14
程序图标句柄
该类的所有消息响 应函数
三大宏:消息映射
.
15
变量的初始化
Dlg类的构造函数中自动初始化了我们添加的 各个变量,最后调用全局函数LoadIcon,装载 默认的程序图标
.
16
◦ 著名的MFC的DDX机制:每当通过ClassWizard为控件添加 一个变量时,就会自动添加该变量的一个DDX到该函数中。
相关文档
最新文档