亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? vc++技術(shù)內(nèi)幕(第四版)筆記(第6章).txt

?? VC++技術(shù)內(nèi)幕精講
?? TXT
字號:
第六章:模式對話框和Windows通用控件

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

2,模式對話框在被關(guān)閉之前,用戶無法在同一應(yīng)用程序的其它地方進行工作。模式對話框更易于編程。無模式對話框在它仍保留在屏幕的同時,用戶還可以在應(yīng)用程序的其它窗口進行工作。

3,對話框控件既可以通過CWnd指針來引用,也可以通過資源文件定義的索引值(和#define常量相關(guān)聯(lián))來引用。對話框控件本身就是一個窗口。控件通過向上級對話框發(fā)送消息來響應(yīng)用戶的動作。利用ClassWizard可以幫助產(chǎn)生CDialog派生類,還可以使對話框類數(shù)據(jù)成員和對話框控件相聯(lián)系。

4,在現(xiàn)存在項目中添加模式對話框步驟:1)用對話框編輯器創(chuàng)建包含各種控件的對話框資源。對話框編輯器會對項目的資源文件更新,使之包含新的對話框資源,并且該項目的resource.h文件也會被更新,以便能夠包含新的#define常量。2)利用ClassWizard創(chuàng)建CDialog派生類,并將它和第一步所創(chuàng)建的資源相連接。3)利用ClassWizard添加控件消息響應(yīng)函數(shù),并進行編輯。4)在其它類中需要使用地方先構(gòu)造該對話框類對象,再調(diào)用DoModal顯示模式對話框。說明:1)在產(chǎn)生的對話框頭文件中包含一個枚舉類型常量IDD,用于設(shè)置該對話框資源ID。枚舉常量IDD的使用減弱了CPP文件對資源ID的依賴。2)《在其它類中顯示模式對話框后,只有當(dāng)模式對話框退出后,才繼續(xù)執(zhí)行該類顯示模式對話框代碼后的代碼。》

5,在組合筐中Data屬性頁下,添加一條后按CTRL+RETURN來結(jié)束(或添加下條item)。(VC6中按?鍵可以獲取相關(guān)幫助提示的)。組合框有Simple,Dropdown,Drop List三中風(fēng)格,可以是Styles中選擇。列表筐中,用戶只能用鼠標(biāo)選擇選擇一個條目,而且在對話框編輯器中不能輸入列表框的初始選擇條目。在靜態(tài)文本控件中可以內(nèi)置'&'符號。運行時候,&符號后面的字符下將有一個下劃線。用戶在按下ALT鍵后同時按下相應(yīng)帶下劃線的字母,則就可以跳轉(zhuǎn)到相應(yīng)的控件上去。注意同一對話框中跳轉(zhuǎn)字符不能重復(fù)。

6,當(dāng)DoModal被調(diào)用后,實際在幕后引起一系列如下的動作:CDialog::DoModal->CEx06Dialog::OnInitDialog->其它的初始化->CDialog::OnInitDialog->CWnd::UpdateData(FALSE)->CEx06Dialog::DoDataExchange用戶輸入數(shù)據(jù)...用戶單擊OK按鈕CEx06Dialog::OnOk->...其它的確認(rèn)處理...->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表示接受對話框數(shù)據(jù),IDCANCEL表示取消對話框數(shù)據(jù)). 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)當(dāng)DoModal函數(shù)返回的時候,對話框窗口不再存在。我們可以在堆棧中創(chuàng)建模式對話框?qū)ο螅@樣就可以保證當(dāng)程序控制轉(zhuǎn)向到C++對話框?qū)ο笏诘姆秶鈺r,它及時的刪除掉。

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); //}}AFX_DATA_MAP}說明:1)DoDataExchange、DDX_(交換)、DDV_(確認(rèn))函數(shù)都具有雙向性。如果調(diào)用UpdateData(FALSE)(參數(shù)為FALSE),則這些數(shù)據(jù)就會將與控件相關(guān)聯(lián)(值關(guān)聯(lián))的數(shù)據(jù)成員的值傳遞給對話框中的控件;相反,如果UpDateData(TURE)(參數(shù)是TURE),則這些函數(shù)會將數(shù)據(jù)從對話框控件中傳遞給與之相關(guān)聯(lián)(值關(guān)聯(lián))的數(shù)據(jù)成員。2)這里DDX_Text函數(shù)被重載,具體參閱MSDN。The DDX_Text function manages the transfer of int, UINT, long, DWORD, CString, float, or double data between an edit control in a dialog box, form view, or control view and a CString data member of the dialog box, form view, or control view object.其它DDX_函數(shù)參閱MSDN。 

8,Enter鍵觸發(fā)OnOk函數(shù)調(diào)用:當(dāng)用戶按下ENTER鍵后,OS會自動去查找輸入焦點落在哪個按鈕上,獲得焦點的按鈕四周將被點線矩形框包圍。如果所有的按鈕都沒獲得輸入焦點,則OS會自動去尋找程序或資源所指定的默認(rèn)按鈕(默認(rèn)按鈕邊框較粗)。如果對話框沒有默認(rèn)按鈕,那么即使對話框中沒有OK按鈕,OnOk函數(shù)也會自動被調(diào)用。由于OnOk函數(shù)是虛函數(shù),可以重寫OnOk函數(shù),將其函數(shù)體置空,變可以使使ENTER鍵無效。分離OK按鈕:改寫OK按鈕ID,并除掉其默認(rèn)按鈕(Default Button)的設(shè)置。

9,p107至WIN32程序員:強烈建議看看,下為簡要筆記。對話框控件會向他們父對話框發(fā)送WM_COMMAND通告消息。大多數(shù)窗口程序處理函數(shù)都是通過一個嵌套的switch結(jié)構(gòu)了處理這些通告消息的,而MFC則更直接了當(dāng)?shù)匕堰@些控件通知消息和其它的Windows消息放在同一個層次上處理。

10,Esc鍵觸發(fā)OnCancel函數(shù)的調(diào)用,導(dǎo)致控制從對話框中退出,如果是模式對話框則DoModal的還返回IDCANCEL值。其消除方法同ENTER鍵。

11,事例代碼涉及的一些主要函數(shù)及補充說明:1)CWnd* GetDlgItem( int nID ) const;//可用它來獲取對話框上控件指針(返回的時候,強制轉(zhuǎn)換成所需要的控件指針),注意臨時性。 void CWnd::GetDlgItem( int nID, HWND* phWnd ) const;//Retrieves a pointer to the specified control or child window in a dialog box or other window. The pointer returned is usually cast to the type of control identified by nID.說明:如果需要包CWnd指針轉(zhuǎn)化成一個控件ID,則可以使用MFC中CWnd類GetDlgCtrlID成員函數(shù)。2)GetScrollPos Retrieves the current position of a scroll box. SetScrollPos Sets the current position of a scroll box. GetScrollRange Retrieves the current minimum and maximum scroll-bar positions for the given scroll bar. SetScrollRange Sets minimum and maximum position values for the given scroll bar. 3)afx_msg void OnHScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar );//CWnd::OnHScroll afx_msg void OnVScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar );//CWnd::OnVScroll 3)所有的水平滾動條都綁在WM_HSCROLL消息控制函數(shù),所有的豎直滾動條則都綁在一個WM_VSCROLL消息控制函數(shù)上。(一般控件都有自己的獨立的消息控制函數(shù),但[滾動條控件]有點不同,所以對同一個對話框多個滾動條消息處理的時候,一般都將它們的滾動范圍設(shè)置一致,方便編程)

/////////////////////////////////////////////////////P109-125頁內(nèi)容筆記待續(xù)12,每個控件在顯示之前會向其父對話框發(fā)送WM_CTLCOLOR消息,對話框本身也會發(fā)送該消息。《對話框和對話框控件都是窗口,也可以在這些窗口中進行繪圖操作。(添加OnPain函數(shù),調(diào)用Invalidate/UpdateWindow讓窗口重繪)》

13,在運行時加入對話框控件:一般步驟:1)在對話框類中添加一個內(nèi)嵌的控件窗口數(shù)據(jù)成員。一個內(nèi)嵌控件C++對象將與相應(yīng)的對話框?qū)ο笠黄鸨粯?gòu)造和刪除。2)從View菜單中選擇Resource Symbols,為新的控件添加一個ID常量。(也可以在Resource.h中用定義)3)用ClassWizard映射WM_INITDIALOG消息覆蓋(Override)基類 CDialog::OnInitDialog函數(shù)。在該函數(shù)里調(diào)用控件窗口的Create成員函數(shù),并顯示新的控件(可以用ShowWindow函數(shù))。Windows回在刪除對話框窗口的同時也刪除該控件窗口。4)在派生對話框類里,為新控件手工加入必要的通知消息控制函數(shù)。(三步:消息控制函數(shù)原型說明,消息映射,消息處理函數(shù))

14,Win32編程經(jīng)驗:父窗口和控件之間是通過Windows消息進行通信的(如MFC中象CListBox::InserString函數(shù)),但適用于所有窗口類型的控件類成員函數(shù)并不發(fā)送消息,而是調(diào)用Win32函數(shù)。

15,Windows通用控件:Win95引進的象[進度指示器],[滑桿條],[微調(diào)按鈕控件],[列表控件]和[樹狀控件]。這些控件的代碼在Windows的COMCTL32.DLL文件中,其中包括了每個控件的窗口過程函數(shù),及每個控件的注冊窗口類的代碼,這些注冊代碼在DLL加載時候被調(diào)用。當(dāng)應(yīng)用程序初始化對話框時,將使用對話框資源中符號化的類名,來連接到DLL里的窗口過程函數(shù)上。這樣應(yīng)用程序就有了控件的窗口,但代碼實際上在DLL里。除了ActiveX控件,大多數(shù)控件都是用這種方法實現(xiàn)的。

16,WM_NOTIFY idCtrl = (int) wParam; //控件ID pnmh = (LPNMHDR) lParam; //指向NMHDR結(jié)構(gòu)指針,該結(jié)構(gòu)由控件管理。說明:1)Sent by a common control to its parent window when an event has occurred in the control or the control requires some kind of information. 2)Not all controls will send WM_NOTIFY messages. In particular, the standard Windows controls (edit controls, combo boxes, list boxes, buttons, scroll bars, and static controls) do not send WM_NOTIFY messages.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合天天综合在线视频| 久久精品男人的天堂| 日韩欧美国产电影| 亚洲美女精品一区| 国内精品伊人久久久久av影院| av在线播放成人| 精品日韩在线一区| 香蕉加勒比综合久久| 99久久婷婷国产精品综合| 日韩一级精品视频在线观看| 亚洲伦理在线免费看| 国产·精品毛片| 欧美成人一区二区| 天天操天天色综合| 色一情一伦一子一伦一区| 国产亚洲精品中文字幕| 麻豆精品国产91久久久久久| 欧美在线视频不卡| 亚洲美女视频在线| 成人激情图片网| 国产午夜精品一区二区三区嫩草| 蜜臀av在线播放一区二区三区| 欧美午夜精品久久久久久孕妇| 亚洲人成伊人成综合网小说| 国产成人在线色| 欧美精品一区二区三| 日韩成人精品在线| 日韩一区二区三区免费看| 日韩黄色片在线观看| 欧美日韩国产小视频在线观看| 一区二区三区电影在线播| 成人黄色网址在线观看| 亚洲国产精品成人久久综合一区 | 欧美福利一区二区| 亚洲资源在线观看| 色哟哟日韩精品| 亚洲一卡二卡三卡四卡 | 日韩一区二区三区三四区视频在线观看| 亚洲六月丁香色婷婷综合久久 | 日韩美一区二区三区| 香港成人在线视频| 91麻豆精品国产91久久久使用方法| 亚洲综合视频在线观看| 欧美无乱码久久久免费午夜一区 | 成人黄色在线网站| 中文字幕字幕中文在线中不卡视频| 北条麻妃国产九九精品视频| 中文字幕在线一区| 色美美综合视频| 亚洲一区二区在线视频| 这里是久久伊人| 老司机精品视频导航| 国产性色一区二区| 99视频精品全部免费在线| 一区二区三区中文字幕电影| 欧美人狂配大交3d怪物一区| 蜜桃视频一区二区| 欧美激情综合五月色丁香小说| caoporm超碰国产精品| 亚洲一区二区美女| 亚洲精品在线电影| 99国产欧美久久久精品| 午夜成人免费视频| 久久精品亚洲一区二区三区浴池| 成人不卡免费av| 天天综合网 天天综合色| 欧美mv日韩mv国产网站app| 成人av片在线观看| 五月激情综合婷婷| 欧美激情综合五月色丁香| 欧美三级韩国三级日本一级| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲人吸女人奶水| 日韩欧美一区在线| 一本一道综合狠狠老| 九九国产精品视频| 亚洲精品久久久久久国产精华液| 精品久久人人做人人爽| 一本色道综合亚洲| 国产精品亚洲人在线观看| 亚洲成a人片综合在线| 久久久久久久网| 欧美疯狂性受xxxxx喷水图片| 成人av综合一区| 久久99精品国产麻豆不卡| 有码一区二区三区| 国产区在线观看成人精品| 欧美老人xxxx18| 色综合久久综合中文综合网| 国产成人在线免费观看| 青青草国产成人99久久| 亚洲一区中文日韩| 亚洲人成在线播放网站岛国| 久久精品日韩一区二区三区| 91精品国产综合久久小美女| 色94色欧美sute亚洲13| 懂色av一区二区三区免费观看 | 精品国产成人在线影院| 欧美少妇bbb| 91麻豆免费看| 9久草视频在线视频精品| 国内成人精品2018免费看| 亚洲成人资源网| 日韩一区中文字幕| 国产精品少妇自拍| 国产亚洲精品精华液| 精品国产电影一区二区| 欧美大片在线观看一区二区| 69堂精品视频| 3atv一区二区三区| 欧美日韩国产天堂| 69成人精品免费视频| 在线91免费看| 欧美日韩在线播放三区四区| 欧美在线观看18| 欧美日韩国产一区| 制服丝袜亚洲播放| 欧美不卡激情三级在线观看| 日韩一区二区三区高清免费看看| 51精品视频一区二区三区| 日韩一级免费观看| 日韩久久久精品| 久久久亚洲国产美女国产盗摄 | 欧美日韩一卡二卡三卡| 欧美日本一区二区在线观看| 欧美日本一区二区在线观看| 在线不卡中文字幕播放| 欧美一三区三区四区免费在线看 | 亚洲欧美一区二区久久| 一区二区三区在线视频观看| 一区av在线播放| 无吗不卡中文字幕| 看电视剧不卡顿的网站| 激情国产一区二区| 国产白丝精品91爽爽久久| 成人精品免费看| 在线这里只有精品| 日韩欧美电影一区| 久久精品欧美日韩精品| 亚洲欧美日韩在线播放| 亚洲福利国产精品| 狠狠色2019综合网| 91在线精品一区二区三区| 欧美日韩免费视频| 精品日韩在线一区| 一区在线播放视频| 视频一区二区三区入口| 国产成人自拍高清视频在线免费播放| 99久久精品国产一区二区三区| 欧洲av在线精品| 久久女同精品一区二区| 一区二区三区久久久| 蜜臀av一区二区在线观看| 成人av在线影院| 日韩一区二区高清| 亚洲丝袜精品丝袜在线| 青娱乐精品在线视频| 成人小视频在线观看| 欧美一区二区三区视频在线 | 欧美日韩国产a| 欧美经典一区二区三区| 香蕉久久一区二区不卡无毒影院| 高清av一区二区| 日韩一区二区免费视频| 亚洲免费av在线| 国产suv精品一区二区三区| 91精品啪在线观看国产60岁| 国产精品美女久久久久久久久| 免费看日韩精品| 色香蕉成人二区免费| 欧美激情在线免费观看| 男人操女人的视频在线观看欧美| 99re视频精品| 国产日韩欧美不卡在线| 久久av中文字幕片| 欧美午夜电影一区| 亚洲欧美日韩系列| 国产99精品国产| 精品国产制服丝袜高跟| 亚洲免费视频中文字幕| 首页国产欧美日韩丝袜| 成人午夜av影视| 欧美变态tickle挠乳网站| 午夜婷婷国产麻豆精品| 99久久综合99久久综合网站| 日韩美女一区二区三区四区| 日本成人中文字幕| 色综合天天综合色综合av| 国产色产综合色产在线视频| 久久精品久久久精品美女| 在线观看亚洲专区| 国产精品高潮久久久久无| 亚洲成人av电影在线| 欧美亚洲动漫精品| 一区视频在线播放| 国产91精品在线观看| 欧美激情一区二区三区蜜桃视频| 日韩激情av在线| 欧美三级乱人伦电影| 日本不卡一区二区三区高清视频|