vc++技术内幕(第四版)笔记(第6章)

悠悠利州情1

悠悠利州情1

2016-02-19 16:18

下面是个简单易学的vc++技术内幕(第四版)笔记(第6章)教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!

第六章:模式对话框和Windows通用控件

1,对话框也是窗口,它不当可以接受消息,而且还可以被移动和关闭,甚至可以在它的客户区中进行绘图操作。

2,模式对话框在被关闭之前,用户无法在同一应用程序的其它地方进行工作。模式对话框更易于编程。

无模式对话框在它仍保留在屏幕的同时,用户还可以在应用程序的其它窗口进行工作。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

3,对话框控件既可以通过CWnd指针来引用,也可以通过资源文件定义的索引值(和#define常量相关联)来引用。对话框控件本身就是一个窗口。控件通过向上级对话框发送消息来响应用户的动作。

利用ClassWizard可以帮助产生CDialog派生类,还可以使对话框类数据成员和对话框控件相联系。

4,在现存在项目中添加模式对话框步骤:

1)用对话框编辑器创建包含各种控件的对话框资源。对话框编辑器会对项目的资源文件更新,使之包含新的对话框资源,并且该项目的resource.h文件也会被更新,以便能够包含新的#define常量。

2)利用ClassWizard创建CDialog派生类,并将它和第一步所创建的资源相连接。

3)利用ClassWizard添加控件消息响应函数,并进行编辑。

4)在其它类中需要使用地方先构造该对话框类对象,再调用DoModal显示模式对话框。

说明:

1)在产生的对话框头文件中包含一个枚举类型常量IDD,用于设置该对话框资源ID。枚举常量IDD的使用减弱了CPP文件对资源ID的依赖。

2)《在其它类中显示模式对话框后,只有当模式对话框退出后,才继续执行该类显示模式对话框代码后的代码。》

5,在组合筐中Data属性页下,添加一条后按CTRL+RETURN来结束(或添加下条item)。(VC6中按?键可以获取相关帮助提示的)。组合框有Simple,Dropdown,Drop List三中风格,可以是Styles中选择。

列表筐中,用户只能用鼠标选择选择一个条目,而且在对话框编辑器中不能输入列表框的初始选择条目。

在静态文本控件中可以内置'&'符号。运行时候,&符号后面的字符下将有一个下划线。用户在按下ALT键后同时按下相应带下划线的字母,则就可以跳转到相应的控件上去。注意同一对话框中跳转字符不能重复。

6,当DoModal被调用后,实际在幕后引起一系列如下的动作:

CDialog::DoModal-CEx06Dialog::OnInitDialog-其它的初始化-CDialog::OnInitDialog-CWnd::UpdateData(FALSE)-CEx06Dialog::DoDataExchange

用户输入数据...

用户单击OK按钮

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

CEx06Dialog::OnOk-...其它的确认处理...-CDialog::OnOk-CWnd::UpDateData(TURE)-CEx06Dialog::DoDataExchange-CDialog::EndDialog(IDOK)

说明:

1)virtual BOOL OnInitDialog( );

//CDialog::OnInitDialog This member function is called in response to the WM_INITDIALOG message. This message is sent to the dialog box during the Create, CreateIndirect, or DoModal calls, which occur immediately before the dialog box is displayed.
//Override this member function if you need to perform special processing when the dialog box is initialized.

2)BOOL UpdateData( BOOL bSaveAndValidate = TRUE );

//CWnd::UpdateData :Call this member function to initialize data in a dialog box, or to retrieve and validate dialog data.
//bSaveAndValidate:Flag that indicates whether dialog box is being initialized (FALSE) or data is being retrieved (TRUE).
//By default UpdateData(TRUE) is called in the default CDialog::OnOK handler and UpdateData(FALSE) is called in the default CDialog::OnInitDialog.

3)virtual void DoDataExchange( CDataExchange* pDX );

//CWnd::DoDataExchange  Called by the framework to exchange and validate dialog data.
//Never call this function (DoDataExchange) directly. It is called by the UpdateData member function.
//Call UpdateData to initialize a dialog box’s controls or retrieve data from a dialog box.

4)void EndDialog( int nResult );

//CDialog::EndDialog  makes the dialog box invisible but does not destroy it.
//Call this member function to terminate a modal dialog box. This member function returns nResult as the return value of DoModal(IDOK表示接受对话框数据,IDCANCEL表示取消对话框数据). You must use the EndDialog function to complete processing whenever a modal dialog box is created.
//注意:If you implement the OK button in a modeless dialog box, you must override the OnOK member function and call DestroyWindow from within it.

5)当DoModal函数返回的时候,对话框窗口不再存在。我们可以在堆栈中创建模式对话框对象,这样就可以保证当程序控制转向到C++对话框对象所在的范围之外时,它及时的删除掉。

7,代码解释:

void CEx06aDialog::DoDataExchange(CDataExchange* pDX)
{
 CDialog::DoDataExchange(pDX);
 //{{AFX_DATA_MAP(CEx06aDialog)
 DDX_Text(pDX, IDC_BIO, m_strBio);//
 DDX_Radio(pDX, IDC_CAT, m_nCat);
 ...
 DDV_MinMaxInt(pDX, m_nSsn, 0, 999999999);
 /

展开更多 50%)
分享

猜你喜欢

vc++技术内幕(第四版)笔记(第6章)

编程语言 网络编程
vc++技术内幕(第四版)笔记(第6章)

vc++技术内幕(第四版)笔记(第7章)

编程语言 网络编程
vc++技术内幕(第四版)笔记(第7章)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

vc++技术内幕(第四版)笔记(第8章)

编程语言 网络编程
vc++技术内幕(第四版)笔记(第8章)

vc++技术内幕(第四版)笔记(第4章)

编程语言 网络编程
vc++技术内幕(第四版)笔记(第4章)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

vc++技术内幕(第四版)笔记(1~2章)

编程语言 网络编程
vc++技术内幕(第四版)笔记(1~2章)

『VC++技术内幕』学习笔记(6)

编程语言 网络编程
『VC++技术内幕』学习笔记(6)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

PHP/MySQL三日通(6)

PHP/MySQL三日通(6)

如何接收屏蔽了的Q群的单独好友发的消息

如何接收屏蔽了的Q群的单独好友发的消息
下拉加载更多内容 ↓