程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> vc++技術內幕(第四版)筆記(第6章)

vc++技術內幕(第四版)筆記(第6章)

編輯:vc教程

第六章:模式對話框和Windows通用控件

1,對話框也是窗口,它不當可以接受消息,而且還可以被移動和關閉,甚至可以在它的客戶區中進行繪圖操作。

2,模式對話框在被關閉之前,用戶無法在同一應用程序的其它地方進行工作。模式對話框更易於編程。

無模式對話框在它仍保留在屏幕的同時,用戶還可以在應用程序的其它窗口進行工作。

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按鈕

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( CData

[1] [2] [3] [4] 下一頁

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved