面向?qū)ο蟪绦蛟O(shè)計(jì)——基于Visual C++:第6章 對(duì)話框和標(biāo)準(zhǔn)控件
《面向?qū)ο蟪绦蛟O(shè)計(jì)——基于Visual C++:第6章 對(duì)話框和標(biāo)準(zhǔn)控件》由會(huì)員分享,可在線閱讀,更多相關(guān)《面向?qū)ο蟪绦蛟O(shè)計(jì)——基于Visual C++:第6章 對(duì)話框和標(biāo)準(zhǔn)控件(71頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 對(duì)話框?qū)υ捒蚴荳indows應(yīng)用程序中一種常用的資源,其主要功能是輸出信息和接收用戶的輸入數(shù)據(jù)。控件控件是嵌入在對(duì)話框中或其它父窗口中的一個(gè)特殊的小窗口,它用于完成不同的輸入、輸出功能。對(duì)話框與控件關(guān)系密切,在每個(gè)對(duì)話框上一般都有一些控件,對(duì)話框依靠這些控件與用戶進(jìn)行信息的交互。本章主要介紹對(duì)話框的工作原理和編程方法,并通過實(shí)例學(xué)習(xí)一些標(biāo)準(zhǔn)控件和公共控件的使用方法。6.1 對(duì)話框概述對(duì)話框概述l就用戶交互輸入功能而言,菜單和工具欄的功能是極其有限的。而對(duì)話框除了用來顯示提示信息(如程序啟動(dòng)時(shí)顯示版權(quán)和運(yùn)行進(jìn)度信息),一個(gè)主要功能是用于接收用戶的輸入數(shù)據(jù)。l在MFC中,對(duì)話框的功能被封裝在CD
2、ialog類中,而CDialog類是CWnd類的派生類。作為窗口,對(duì)話框和其它窗口一樣具有窗口的一切功能。l對(duì)話框的一個(gè)典型應(yīng)用是通過菜單命令或工具欄按鈕打開一個(gè)對(duì)話框,當(dāng)然,對(duì)話框也可以作為一個(gè)程序的主界面。6.1.1 基于對(duì)話框的應(yīng)用程序基于對(duì)話框的應(yīng)用程序l可以直接利用MFC AppWizard向?qū)?chuàng)建一個(gè)基于對(duì)話框的應(yīng)用程序,這種程序運(yùn)行后首先出現(xiàn)一個(gè)對(duì)話框。在向?qū)У牡谝徊竭x擇Dialog Based項(xiàng)。此時(shí),應(yīng)用程序向?qū)⒊霈F(xiàn)與單文檔和多文檔程序向?qū)Р煌牟僮鞑襟E,因?yàn)閷?duì)話框應(yīng)用程序一般不包含文檔,故不支持?jǐn)?shù)據(jù)庫和復(fù)合文檔。l按照對(duì)話框應(yīng)用程序向?qū)崾镜牟襟E進(jìn)行操作就得到一個(gè)對(duì)話框應(yīng)
3、用程序項(xiàng)目,出現(xiàn)對(duì)話框編輯器和控件工具欄浮動(dòng)窗口,它們采用的是一種所見即所得的可視化工作方式。利用向?qū)?chuàng)建應(yīng)用程序的框架后,程序員可根據(jù)程序具體功能要求添加代碼。例例 編寫一個(gè)對(duì)話框應(yīng)用程序MyDialog,程序運(yùn)行后顯示一個(gè)對(duì)話框,并在對(duì)話框上顯示文本串。1執(zhí)行File|New命令出現(xiàn)New對(duì)話框,選擇MFC AppWizardexe項(xiàng),輸入程序名MyDialog,單擊OK按鈕。在隨后出現(xiàn)的MFC AppWizard-Step 1對(duì)話框窗口中選擇Dialog Based選項(xiàng),單擊Finish按鈕就創(chuàng)建了應(yīng)用程序項(xiàng)目,并在Developer Studio中打開了對(duì)話框編輯器和控件工具欄。2去掉
4、對(duì)話框中標(biāo)題為“TODO:在這里設(shè)置對(duì)話控制”的靜態(tài)文本控件,調(diào)整對(duì)話框大小,在成員函數(shù)CMyDialogDlg:OnPaint()中添加代碼。void CMyDialogDlg:OnPaint().else CPaintDC dc(this);dc.SetBkMode(TRANSPARENT);dc.TextOut(20,50,這是一個(gè)對(duì)話框應(yīng)用程序!);CDialog:OnPaint();6.1.2 對(duì)話框類對(duì)話框類CDialog MFC提供了一系列對(duì)話框類,并實(shí)現(xiàn)了對(duì)話框消息響應(yīng)和處理機(jī)制。CDialog類是對(duì)話框類中最重要的類,我們?cè)诔绦蛑袆?chuàng)建的對(duì)話框類一般都是CDialog類的派生類
5、。CDialog類還是其它所有對(duì)話框類的基類,其派生關(guān)系如下所示:CObject CCmdTarget CWnd CDialog 對(duì)話框類為程序員提供了管理對(duì)話框的編程接口。CDialog類從CWnd類派生而來,所以它繼承了CWnd類的成員函數(shù),具有CWnd類的基本功能,可以編寫代碼移動(dòng)、顯示或隱藏對(duì)話框,并能根據(jù)對(duì)話框的特點(diǎn)增加新的成員函數(shù),擴(kuò)展它的功能。在你的CDialog類的派生類中可以直接調(diào)用CDialog類的成員函數(shù)。大部分的成員函數(shù)是虛函數(shù),可以在你的派生類中重載,以實(shí)現(xiàn)特定的目的。除了CDialog類成員函數(shù),類CWnd和CWinApp也提供了一些成員函數(shù)用于對(duì)話框的管理。有關(guān)對(duì)
6、話框的常用處理函數(shù)有關(guān)對(duì)話框的常用處理函數(shù)CDialog:CDialog()通過調(diào)用派生類構(gòu)造函數(shù),根據(jù)對(duì)話框資源模板定義一個(gè)對(duì)話框。CDialog:DoModal()激活模態(tài)對(duì)話框模態(tài)對(duì)話框,顯示對(duì)話框窗口。CDialog:Create()根據(jù)對(duì)話框資源模板創(chuàng)建非非模模態(tài)態(tài)對(duì)對(duì)話話框框窗口。如果對(duì)話框不是Visible屬性,還需通過調(diào)用CWnd:ShowWindow()函數(shù)顯示非模態(tài)對(duì)話框窗口。CDialog:OnOk()單擊OK按鈕時(shí)調(diào)用該函數(shù),接收對(duì)話框輸入數(shù)據(jù),關(guān)閉對(duì)話框。CDialog:OnCancel()單擊Cancel按鈕或按Esc鍵時(shí)調(diào)用該函數(shù),不接收對(duì)話框輸入數(shù)據(jù),關(guān)閉對(duì)話框
7、。CDialog:OnInitDialog()WM_INITDIALOG消 息 處 理 函 數(shù),在 調(diào) 用 DoModal或Create函數(shù)時(shí)系統(tǒng)發(fā)送WM_INITDIALOG消息,在顯示對(duì)話框前調(diào)用該函數(shù)進(jìn)行初始化。CDialog:EndDialog()用于關(guān)閉模態(tài)對(duì)話框窗口。CWnd:ShowWindow()顯示或隱藏對(duì)話框窗口CWnd:DestroyWindow()關(guān)閉并銷毀非模態(tài)對(duì)話框CWnd:UpdateData()通過調(diào)用DoDataExchange()設(shè)置或獲取對(duì)話框控件的數(shù)據(jù)CWnd:DoDataExchange()被UpdateData()調(diào)用以實(shí)現(xiàn)對(duì)話框數(shù)據(jù)交換,不能直接調(diào)
8、用。CWnd:GetWindowText()獲取對(duì)話框窗口的標(biāo)題CWnd:SetWindowText()修改對(duì)話框窗口的標(biāo)題CWnd:GetDlgItemText()獲取對(duì)話框中控件的文本內(nèi)容CWnd:SetDlgItemText()設(shè)置對(duì)話框中控件的文本內(nèi)容CWnd:GetDlgItem()獲取控件或子窗口的指針CWnd:MoveWindow()用于移動(dòng)對(duì)話框窗口CWnd:EnableWindow()使窗口處于禁用或可用狀態(tài)6.1.3 對(duì)話框數(shù)據(jù)交換對(duì)話框數(shù)據(jù)交換DDX和驗(yàn)證和驗(yàn)證DDVl在對(duì)話框中實(shí)現(xiàn)用戶數(shù)據(jù)輸入和輸出的一般方法是通過ClassWizard類向?qū)?duì)話框控件與成員變量相關(guān)聯(lián)
9、,利用對(duì)話框數(shù)據(jù)交換DDX(Dialog Data Exchange)和驗(yàn)證DDV(Dialog Data Validation)機(jī)制實(shí)現(xiàn)數(shù)據(jù)的輸入和輸出。l當(dāng)利用ClassWizard類向?qū)砑映蓡T變量時(shí),用戶如果在窗口的左下角輸入數(shù)據(jù)的范圍,ClassWizard將自動(dòng)加入函數(shù)DDV的調(diào)用代碼。例如,當(dāng)添加一個(gè)UINT型的成員變量m_nInput時(shí)指定它的最小值和最大值分別為0和100,則ClassWizard類向?qū)⒃诔蓡T函數(shù)DoDataExchange()中添加以下DDV函數(shù)的調(diào)用語句:DDV_MinMaxUInt(pDX,m_nInput,0,100);程序運(yùn)行后,如果用戶的輸入數(shù)據(jù)
10、超出0100的范圍,DDV將顯示一個(gè)提示信息對(duì)話框(例7-2c),提示用戶有效的輸入范圍。UpdateData()的用法的用法:當(dāng)調(diào)用UpdateData(TRUE)時(shí),MFC通過調(diào)用DDX函數(shù)將數(shù)據(jù)從控件傳遞到關(guān)聯(lián)的成員變量;當(dāng)調(diào)用UpdateData(FALSE)時(shí),MFC通過調(diào)用DDX函數(shù)將數(shù)據(jù)從成員變量傳遞到關(guān)聯(lián)的的控件。利用UpdateData()函數(shù)實(shí)現(xiàn)了在刷新后重新獲取成員變量。注意:注意:表面上看程序并沒有調(diào)用UpdateData(),但是,當(dāng)程序調(diào)用CDialog:DoModal()創(chuàng)建并顯示對(duì)話框時(shí),將自動(dòng)調(diào)用CDialog:OnInitDialog()完成初始化的工作。在
11、OnInitDialog()中調(diào)用了UpdateData(FALSE),將數(shù)據(jù)從成員變量傳遞到關(guān)聯(lián)的控件,從而顯示在控件中。而單擊OK按鈕將調(diào)用CDialog:OnOk()函數(shù),在OnOK()中調(diào)用了UpdateData(TRUE),將數(shù)據(jù)從控件傳遞到關(guān)聯(lián)的成員變量。由此看來,不管MFC將DDX技術(shù)如何復(fù)雜化,我們只需知道,DDX就如同一條雙向通道,而方向控制開關(guān)就是UpdateData()函數(shù)中的BOOL類型參數(shù)是TRUE還是FALSE。6.1.4 提示信息對(duì)話框提示信息對(duì)話框 提示信息對(duì)話框也稱消息對(duì)話框,用來顯示有關(guān)的提示信息。提示信息對(duì)話框是一種最簡(jiǎn)單的對(duì)話框,不需要用戶自己創(chuàng)建它就可
12、以直接使用,Visual C+提供了相應(yīng)的函數(shù)實(shí)現(xiàn)這樣的功能。:int AfxMessageBox(LPCTSTR lpText,UINT nType=MB_OK,UINT nlDHelp=0);int MessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT nType);int CWnd:MessageBox(LPCTSTR lpText,LPCTSTR lpCaption=NULL,UINT nType=MB_OK);這三個(gè)函數(shù)分別是MFC全局函數(shù)、API函數(shù)和CWnd類的成員函數(shù),它們的功能基本相同,但適用范圍有所不同。Afx
13、MessageBox()和:MessageBox()可以在程序中任何地方使用,而CWnd:MessageBox()只能用于控件、對(duì)話框、窗口等一些窗口類中。例如,在軟件安裝過程中為了彈出如下圖所示的警告提示信息對(duì)話框并進(jìn)行相應(yīng)的處理:編寫的代碼如下:int nChoice=MessageBox(文件復(fù)制失??!,錯(cuò)誤,MB_ICONWARNING|MB_ABORTRETRYIGNORE);switch(nChoice)case IDABORT:/用戶按下終止按鈕.caseIDRETRY:/用戶按下重試按鈕.case IDIGNORE:/用戶按下忽略按鈕.6.2 使用對(duì)話框使用對(duì)話框 為了在屏幕上
14、顯示對(duì)話框:(1)首先需要建立對(duì)話框資源及其與資源相關(guān)的對(duì)話框類;(2)然后添加控件、與控件關(guān)聯(lián)的成員變量和消息處理函數(shù);(3)最后在程序中顯示對(duì)話框并訪問與控件關(guān)聯(lián)的成員變量。在Visual C+中可以利用集成工具如對(duì)話框編輯器和ClassWizard類向?qū)Ш芊奖愕貏?chuàng)建對(duì)話框,不需要程序員手工編寫太多的源代碼。6.2.1 一般對(duì)話框工作流程一般對(duì)話框工作流程 l當(dāng)定義了一個(gè)對(duì)話框類后,就可以利用這個(gè)對(duì)話框類聲明一個(gè)對(duì)話框?qū)ο?,即一個(gè)能夠在屏幕上顯示的對(duì)話框。l聲明了一個(gè)對(duì)話框?qū)ο蠛?,可以調(diào)用對(duì)話框類的成員函數(shù)DoModal()建立對(duì)話框窗口并顯示對(duì)話框。例如,假設(shè)定義了一個(gè)名為CMyDial
15、og的對(duì)話框類,為了在屏幕上顯示一個(gè)對(duì)話框,可以編寫如下代碼:CMyDialog myDlg;myDlg.DoModal();函數(shù)函數(shù)OnOK()、OnCancel()與與DoModal()的關(guān)系:的關(guān)系:對(duì)話框中一般都有OK和Cancel按鈕,單擊OK按鈕時(shí)調(diào)用CDialog:OnOK()函數(shù),單擊Cancel按鈕時(shí) 調(diào) 用 CDialog:OnCancel()函 數(shù)。OnOK()函 數(shù) 和 OnCancal()函數(shù)都將結(jié)束DoModal()函數(shù)調(diào)用,但令DoModal()返回不同的值。OnOK()函數(shù)令DoModal()返回IDOK,OnCancel()函 數(shù) 令 DoModal()返 回
16、IDCANCAL。用戶可以根據(jù)DoModal()的返回值做出不同的選擇。如:if(myDlg.DoModal()=IDOK)對(duì)話框的初始化對(duì)話框的初始化可以在三個(gè)不同的階段所調(diào)用的函數(shù)中進(jìn)行:(1)對(duì)話框類構(gòu)造函數(shù);(2)WM_CREATE消息處理函數(shù);(3)WM_INITDIALOG消息處理函數(shù)。通常是在消息WM_INITDIALOG的消息處理函數(shù)OnInitDialog()中進(jìn)行初始化。在收到WM_INIT-DIALOG消息時(shí),對(duì)話框的框架已創(chuàng)建,對(duì)話框中的每個(gè)控件也已建立起來,但它們還沒有在屏幕上顯示。此時(shí)自然可以設(shè)置或優(yōu)化對(duì)話框中各個(gè)控件的外觀、尺寸、位置以及其它屬性。函數(shù)OnInit
17、Dialog()將被成員函數(shù)DoModal()調(diào)用。6.2.2 創(chuàng)建對(duì)話框創(chuàng)建對(duì)話框 在Windows中對(duì)話框是作為一種資源被使用,在程序中要?jiǎng)?chuàng)建一個(gè)對(duì)話框,首先要?jiǎng)?chuàng)建一個(gè)對(duì)話框模板資源,然后創(chuàng)建一個(gè)基于該對(duì)話框模板資源的對(duì)話框類。對(duì)話框模板資源指定了對(duì)話框本身的屬性(如大小、位置、風(fēng)格、類型等)和對(duì)話框中的控件及屬性,而對(duì)話框類規(guī)定了對(duì)話框和對(duì)話框中每個(gè)控件的行為。通過對(duì)話框模板資源才能創(chuàng)建對(duì)話框類和對(duì)象。為了向應(yīng)用程序項(xiàng)目中添加一個(gè)對(duì)話框資源,執(zhí)行Insert|Resource命令或直接按Ctrl+R鍵,彈出Insert Resource資源列表框。一般要加入通用對(duì)話框資源,所以在Inse
18、rt Resource框中直接選擇Dialog項(xiàng),然后單擊New按鈕。系統(tǒng)將給對(duì)話框資源設(shè)置一個(gè)默認(rèn)的ID標(biāo)識(shí),對(duì)話框的默認(rèn)標(biāo)題Caption為Dialog,對(duì)話框有OK和Cancel兩個(gè)按鈕。對(duì)話框資源的添加:對(duì)話框資源的添加:添加對(duì)話框資源的簡(jiǎn)單方法:添加對(duì)話框資源的簡(jiǎn)單方法:在項(xiàng)目工作區(qū)鼠標(biāo)右擊資源項(xiàng)Dialog,從彈出式菜單中選擇“Insert Dialog”命令項(xiàng)。對(duì)話框是在對(duì)話框模板資源和對(duì)話框類的基礎(chǔ)上形成的,在完成了對(duì)話框的屬性和外觀設(shè)計(jì)后,再來設(shè)計(jì)對(duì)話框的行為。我們需要利用ClassWizard類向?qū)?chuàng)建一個(gè)對(duì)話框類,并將這個(gè)類同先前創(chuàng)建的對(duì)話框資源連接起來。在創(chuàng)建對(duì)話框類之
19、前或之后,都可以為對(duì)話框資源添加控控件件。而在創(chuàng)建對(duì)話框類之后,還可以為對(duì)話框資源添加與對(duì)話框控件相關(guān)聯(lián)的成成員員變變量量和消消息息處理函數(shù)處理函數(shù)。創(chuàng)建對(duì)話框類:創(chuàng)建對(duì)話框類:如果按Ctrl+W鍵或在對(duì)話框資源的非控件區(qū)域雙擊鼠標(biāo),ClassWizard類向?qū)l(fā)現(xiàn)已添加了一個(gè)對(duì)話框模板資源,卻沒有設(shè)計(jì)其對(duì)應(yīng)的類,因此將彈出Adding a Class對(duì)話框,詢問用戶是否需要利用該對(duì)話框資源創(chuàng)建一個(gè)對(duì)話框類。lName框:用于輸入對(duì)話框類的名稱;lFile Name框:列出類的文件名,單擊Change按鈕可改變文件名;lBase class下拉框:列出可選擇的基類;lDialog ID下拉框
20、:列出可選擇對(duì)話框資源的ID。例例 假設(shè)已利用MFC AppWizard應(yīng)用程序向?qū)Ы⒘艘粋€(gè)名為Mysdi的單文檔應(yīng)用程序,請(qǐng)向應(yīng)用程序中添加對(duì)話框資源和對(duì)話框類。在Adding a Class對(duì)話框單擊OK按鈕,彈出New Class對(duì)話框:1首先向應(yīng)用程序項(xiàng)目添加一個(gè)對(duì)話框資源,在項(xiàng)目工作區(qū)鼠標(biāo)右擊資源項(xiàng)Dialog,從彈出式菜單中執(zhí)行Insert Dialog命令,插入一個(gè)對(duì)話框資源。2設(shè)置對(duì)話框的屬性,將光標(biāo)指向?qū)υ捒虻目瞻孜恢?,單擊鼠?biāo)右鍵,從彈出式菜單中選擇Properties項(xiàng),或 直 接 按 Enter鍵,彈 出 Dialog Properties屬性對(duì)話框。該對(duì)話框包括Ge
21、neral、Styles、More Styles、Extended Styles、More Extended Styles等頁面,用于設(shè)置對(duì)話框多種不同的屬性。3創(chuàng)建對(duì)話框類,鼠標(biāo)雙擊對(duì)話框資源的非控件區(qū)域。6.2.3 添加控件及關(guān)聯(lián)的成員變量添加控件及關(guān)聯(lián)的成員變量l如果沒有控控件件,對(duì)話框完成不了什么具體功能,對(duì)話框與控件有著密不可分的關(guān)系。結(jié)合對(duì)話框編輯器,利用Controls控件工具欄可給當(dāng)前正在編輯的對(duì)話框模板資源添加控件。l若Visual C+窗口中沒有出現(xiàn)Controls工具欄,只需將光標(biāo)指向菜單欄并單擊鼠標(biāo)右鍵,從彈出式菜單中選擇Controls項(xiàng)。l控件工具欄上的每一個(gè)圖標(biāo)都
22、代表了一種控件,如果不能確定控件的類型,只要將光標(biāo)在該控件圖標(biāo)上停留片刻,就會(huì)顯示該控件類型的提示。向?qū)υ捒蛱砑涌丶r(shí),先在Controls工具欄單擊要添加的控件,再將光標(biāo)指向?qū)υ捒蚩瞻讌^(qū)域并單擊鼠標(biāo)。添加與控件關(guān)聯(lián)的成員變量添加與控件關(guān)聯(lián)的成員變量 在生成自己的對(duì)話框類并添加需要的控件后,可以利用ClassWizard類向?qū)г趯?duì)話框類的定義中為對(duì)話框資源上的每一個(gè)控件添加一個(gè)或多個(gè)對(duì)應(yīng)的成員變量。ClassWizard類向?qū)У腗ember Variables頁面主要用來為對(duì)話框類添加和刪除與對(duì)話框控件關(guān)聯(lián)的成員變量,我們?cè)诰帉憣?duì)話框程序時(shí)經(jīng)常同該頁面打交道。lClass name下拉框:選擇
23、要添加成員變量的對(duì)話 框類;lControl IDs欄:選擇控件,因?yàn)橐砑拥某蓡T變量總是與一個(gè)對(duì)話框控件ID聯(lián)系在一起,它們代表控件對(duì)象本身或控件的某項(xiàng)屬性;lAdd Variable按鈕:添加與控件關(guān)聯(lián)的成員變量;lDelete Variable按鈕:刪除控件的某個(gè)成員變量。lControl IDs欄:列出對(duì)話框資源上已有的控件,第1列Control IDs表示控件的ID,第2列Type表示變量的類型,第3列Member表示成員變量名。在在Member Variables頁面:頁面:Add Member Variable對(duì)話框?qū)υ捒騦Member variable name框:輸入成員變量
24、名;lCategory下拉框:選擇成員變量的類別,可為Control或 Value;lVariable type下拉框:選擇成員變量的類型。l如果在Category下拉框選擇Value項(xiàng),表示要為該控件的某項(xiàng)屬性定義一個(gè)變量,這意味著程序關(guān)心的是控件中的值,而不是控件對(duì)象本身。這時(shí),還可以通過Variable type下拉框?yàn)樽兞窟x擇不同的類型,可以選擇一般的C+數(shù)據(jù)類型或Visual C+自定義的數(shù)據(jù)類型。l例如,對(duì)于編輯框控件,此時(shí)成員變量的類型可以是int、float、long、BOOL等C+一般數(shù)據(jù)類型或者是UINT、CString等Visual C+自定義數(shù)據(jù)類型。l如果在Categ
25、ory下拉框中選擇Control項(xiàng),則表示定義的變量代表控件對(duì)象本身,Control類別的變量實(shí)質(zhì)是一個(gè)控件對(duì)象,其類型是MFC控件類。l例如,對(duì)于編輯框控件,此時(shí)成員變量的類型為CEdit。因此,可以通過添加的控件對(duì)象訪問控件類的成員變量和調(diào)用控件類的成員函數(shù),實(shí)現(xiàn)對(duì)控件行為的控制和管理。l可以為一個(gè)控件同時(shí)定義一個(gè)Control類別的變量和一個(gè)Value類別的變量。這些變量都是作為對(duì)話框派生類的成員變量,為了在程序其它地方能夠直接訪問添加的成員變量,它們都被聲明為public屬性。例例 完善Mysdi程序,向?qū)υ捒蛸Y源添加需要使用的控件,并添加與控件關(guān)聯(lián)的成員變量。1向?qū)υ捒蛸Y源添加控件。
26、添加一個(gè)靜態(tài)文本控件,其Caption為“請(qǐng)輸入半徑”。添加一個(gè)Edit Box編輯框控件,其ID標(biāo)識(shí)為IDC_EDIT_ RADIUS,該控件用于接收用戶的輸入數(shù)據(jù)。2 添 加 與 控 件 關(guān) 聯(lián) 的 成 員 變 量。按 Ctrl+W鍵 啟 動(dòng)ClassWizard類向?qū)В瑔螕鬗ember Variables標(biāo)簽。在Class name下拉框選擇類CRadiusDialog,在Control IDs欄選擇編輯框IDC_EDIT_RADIUS,單擊Add Variable按鈕。通過Add Member Variable對(duì)話框添加成員變量m_nRadius,其數(shù)據(jù)類型為UINT。3使用對(duì)話框數(shù)據(jù)
27、驗(yàn)證DDV功能,在該頁面的左下角輸入成員變量m_nRadius的最小值5和最大值250。例例 完善Mysdi程序,通過“編輯”菜單中的“輸入半徑(I)”命令打開上述標(biāo)題為“輸入半徑”的對(duì)話框,并根據(jù)輸入的半徑畫一個(gè)圓。1為了在視圖對(duì)象中接收并存儲(chǔ)對(duì)話框編輯控件的值,在視圖類CMysdiView中手工定義一個(gè)UINT類型的成員變量m_nCViewRadius。2利用菜單編輯器在“編輯”菜單增加一個(gè)菜單項(xiàng)“輸入半徑(I)”,其ID標(biāo)識(shí)為ID_EDIT_INPUTRADIUS,Caption為“輸入半徑(&I).”。按Ctrl+W鍵啟動(dòng)ClassWzard類向?qū)?,在視圖類中為ID_EDIT_INPU
28、TRADIUS菜單項(xiàng)添加消息COMMAND的處理函數(shù),在函數(shù)中添加代碼。在程序中使用創(chuàng)建的對(duì)話框在程序中使用創(chuàng)建的對(duì)話框 void CMysdiView:OnEditInputradius()/TODO:Add your command handler code here CRadiusDialog dlg;/定義一個(gè)對(duì)話框?qū)ο?dlg.m_nRadius=100;/設(shè)置編輯框顯示的初始值 if(dlg.DoModal()=IDOK)/顯示對(duì)話框 m_nCViewRadius=dlg.m_nRadius;/接收并存儲(chǔ)編輯框數(shù)據(jù) Invalidate();/刷新視圖 3在視圖類構(gòu)造函數(shù)CMysd
29、iView:CMysdiView()中將 成 員 變 量 m_nCViewRadius初 始 化 為 0。在 函 數(shù) CMysdiView:OnDraw()中添加如下畫圓的語句:pDC-Ellipse(0,0,2*m_nCViewRadius,2*m_nCViewRadius);在視圖類實(shí)現(xiàn)文件MysdiView.cpp的開始位置加入包含對(duì)話框類頭文件的語句:#include RadiusDialog.h”6.3 標(biāo)準(zhǔn)控件標(biāo)準(zhǔn)控件 lWindows提供的控件分為兩類:標(biāo)準(zhǔn)控件和公共控件。l標(biāo)準(zhǔn)控件:靜態(tài)控件、編輯框、按鈕、列表框、組合框和滾動(dòng)條等。利用標(biāo)準(zhǔn)控件可滿足大部分用戶界面程序設(shè)計(jì)的要求
30、。l公共控件:滑塊、進(jìn)度條、列表視控件、樹視控件和標(biāo)簽控件等,利用公共控件實(shí)現(xiàn)應(yīng)用程序用戶界面風(fēng)格的多樣性。6.3.1 控件概述控件概述l控件是Windows提供的完成特定功能的獨(dú)立小部件,它使應(yīng)用程序?qū)υ捁δ艿脑O(shè)計(jì)更容易完成,在對(duì)話框與用戶的交互過程中擔(dān)任主要角色,用于完成用戶輸入和程序運(yùn)行過程中的輸出。l控件對(duì)應(yīng)一個(gè)CWnd派生類的對(duì)象,它實(shí)際上也是一個(gè)窗口,可以通過調(diào)用窗口類的成員函數(shù)實(shí)現(xiàn)控件的移動(dòng)、顯示或隱藏、禁用或可用等操作,也可以重新設(shè)置它們的尺寸和風(fēng)格等屬性。lMFC以類的形式對(duì)標(biāo)準(zhǔn)控件和公共控件進(jìn)行了封裝,這些類大部分是從CWnd類直接派生而來。常用的常用的MFC控件類控件類
31、MFC類類控控 件件CStatic靜態(tài)文本、圖片控件CEdit編輯框CButton按鈕、復(fù)選框、單選按鈕、組框CComboBox組合框CListBox列表框CScrollBar滾動(dòng)條CSpinButtonCtrl旋轉(zhuǎn)按鈕CProgressCtrl進(jìn)度條CSliderCtrl滑塊CListCtrl列表視控件常用的常用的MFC控件類控件類 MFC類類控控 件件CTreeCtrl樹視控件CTabCtrl標(biāo)簽CAnimateCtrl動(dòng)畫控件CRichEditCtrl復(fù)合編輯框CDateTimeCtrl日期時(shí)間選取器CMonthCalCtrl日歷CComboBoxEx擴(kuò)展組合框CStatusBarCtr
32、l狀態(tài)條控件CToolBarCtrl工具條控件CImageList圖像列表控件通知控件通知Notification消息消息:l用戶對(duì)控件的操作將引發(fā)控件事件,Windows產(chǎn)生對(duì)應(yīng)的控件通知Notification消息,消息由其父窗口(如對(duì)話框)接收并處理。l標(biāo)準(zhǔn)控件發(fā)送WM_COMMAND控件通知消息,公共控件一般發(fā)送WM_NOTIFY控件通知消息,有時(shí)也發(fā)送WM_COMMAND消息。l通過WM_COMMAND消息參數(shù)標(biāo)識(shí)發(fā)出消息的控件和具體的事件,消息參數(shù)中包含了控件的ID標(biāo)識(shí)和通知碼(如BN_CLICKED單擊按鈕事件)。控件通知碼前綴最后一個(gè)字母為N。l程序員不必關(guān)心消息具體的發(fā)送和接
33、收,只需利用ClassWizard將控件映射到成員變量,將控件消息映射到成員函數(shù),然后編寫具體的處理代碼??丶膭?chuàng)建方法:控件的創(chuàng)建方法:l控件在程序中可作為對(duì)話框控件或獨(dú)立的窗口兩種形式存在,因此,控件的創(chuàng)建方法也有兩種。l一種方法是在對(duì)話框模板資源中指定控件,這樣當(dāng)應(yīng)用程序創(chuàng)建對(duì)話框時(shí),Windows就會(huì)為對(duì)話框創(chuàng)建控件,編程時(shí)我們一般都采用這種方法。l一種方法是通過調(diào)用MFC控件類的成員函數(shù)Create()創(chuàng)建控件,也可以調(diào)用API函數(shù)CreateWindow()或CreateWindowEx()創(chuàng)建控件。l控件也可以用于其它窗口,如在程序視圖窗口顯示控件。這時(shí),需要首先聲明一個(gè)MFC控
34、件類的對(duì)象,然后調(diào)用Create()函數(shù)創(chuàng)建控件。6.3.2 控件的組織控件的組織1.添加或刪除控件添加或刪除控件 打開對(duì)話框編輯器和控件工具欄,在控件工具欄中單擊要添加的控件,此時(shí),當(dāng)光標(biāo)指向?qū)υ捒驎r(shí)將變成十字形狀,在對(duì)話框指定位置處單擊鼠標(biāo)左鍵,則該控件被添加到對(duì)話框中指定的位置。也可以將光標(biāo)指向控件工具欄中的控件,然后按住鼠標(biāo)不放,采用鼠標(biāo)拖曵的方法將控件拖入到對(duì)話框中。要?jiǎng)h除已添加的控件,先單擊對(duì)話框中的控件,再按Delete鍵即可刪除指定的控件。2.設(shè)置控件屬性設(shè)置控件屬性 將光標(biāo)指向?qū)υ捒蛑行柙O(shè)置屬性的控件,按回車鍵(或右擊鼠標(biāo),在彈出式菜單中選擇Properties項(xiàng))彈出Pro
35、perties對(duì)話框,在Properties對(duì)話框中設(shè)置控件屬性??梢詫傩詫?duì)話框始終保持打開,只需要按下屬性對(duì)話框左上角的圖釘按鈕。3.調(diào)整控件的大小調(diào)整控件的大小 對(duì)于靜態(tài)文本控件,當(dāng)輸入標(biāo)題內(nèi)容時(shí),控件的大小會(huì)自動(dòng)改變。對(duì)于其它控件,先單擊控件,然后利用控件周圍的尺寸調(diào)整點(diǎn)來改變控件的大小。所選對(duì)象的位置和大小將顯示在狀態(tài)欄的右端。4.同時(shí)選取多個(gè)控件同時(shí)選取多個(gè)控件 一種方法是在對(duì)話框內(nèi)按住鼠標(biāo)不放,拖曵出一個(gè)大的虛線框,然后釋放鼠標(biāo),則被該虛線框所包圍的控件都將被同時(shí)選??;另一種方法是按住Shift(或Ctrl)鍵不放,然后用鼠標(biāo)連續(xù)選取控件。5.移動(dòng)和復(fù)制控件移動(dòng)和復(fù)制控件 當(dāng)單個(gè)
36、或多個(gè)控件被選取后,按方向鍵或用鼠標(biāo)拖動(dòng)選擇的控件可移動(dòng)控件。若在鼠標(biāo)拖動(dòng)過程中按住Ctrl鍵則復(fù)制控件,復(fù)制的控件保持原來控件的大小和屬性。并且,控件能夠通過復(fù)制和粘貼操作而加入到其它對(duì)話框中。6.編排控件編排控件 編排控件主要是指同時(shí)調(diào)整對(duì)話框中一組控件的大小或位置。編排控件有兩種方法,一種方法是使用控件布局工具欄,自動(dòng)編排對(duì)話框中同時(shí)選定的多個(gè)控件;另一種方法是使用Layout菜單,當(dāng)打開對(duì)話框編輯器時(shí),Layout菜單將出現(xiàn)在菜單欄上。為了便于用戶在對(duì)話框內(nèi)精確定位各個(gè)控件,系統(tǒng)還提供了網(wǎng)格、標(biāo)尺等輔助功能。測(cè)試對(duì)話框和控件的方法:測(cè)試對(duì)話框和控件的方法:通過按下Ctrl+T組合鍵就能
37、測(cè)試對(duì)話框運(yùn)行時(shí)的界面效果。6.3.3 控件共有屬性控件共有屬性l控件的屬性決定了控件的外觀和功能,我們只有通過控件屬性對(duì)話框才能設(shè)置控件的屬性。l控件屬性對(duì)話框上有若干選項(xiàng)卡,如General(通用屬性)、Style(風(fēng)格)及Extend Styles(擴(kuò)展風(fēng)格)選項(xiàng)卡等,其中General頁用于設(shè)置控件的通用屬性,Styles和Extendcd Styles頁用來設(shè)置控件的外觀和輔助屬性。l不同控件有不同的屬性,但它們都具有通用屬性,如控件標(biāo)識(shí)ID、標(biāo)題Caption等項(xiàng),控件的控件的General屬性屬性項(xiàng)項(xiàng) 目目說說 明明 ID控件的標(biāo)識(shí),對(duì)話框編輯器會(huì)為每一個(gè)加入的控件分配一個(gè)默認(rèn)的
38、ID Caption控件的標(biāo)題,作為程序執(zhí)行時(shí)在控件位置上顯示的文本 Visible指明顯示對(duì)話框時(shí)該控件是否可見 Group用于指定一個(gè)控件組中的第一個(gè)控件 HelpID表示為該控件建立一個(gè)上下文相關(guān)的幫助標(biāo)識(shí)ID Disabled指定控件初始化時(shí)是否禁用 Tab Stop表示對(duì)話框運(yùn)行后該控件可以通過使用Tab鍵來獲取焦點(diǎn)6.3.4 靜態(tài)控件靜態(tài)控件l靜靜態(tài)態(tài)控控件件(Static control)是用來顯示一個(gè)文本串或圖形信息的控件,它包括靜態(tài)文本控件、圖片控件和組框。l靜態(tài)文本控件用來顯示一般不需要變化的文本;圖片控件用來顯示邊框、矩形、圖標(biāo)或位圖等圖形;組框用來顯示一個(gè)文本標(biāo)題和一個(gè)
39、矩形邊框,通常用來作為一組控件周圍的虛擬邊界,并將一組控件組織在一起。l管理靜態(tài)文本控件和圖片控件的MFC類是CStatic類,而管理組框的MFC類是CButton類。l所有靜態(tài)控件默認(rèn)的ID標(biāo)識(shí)都為IDC_STATIC,如果要為一個(gè)靜態(tài)控件添加成員變量或消息處理函數(shù),必須重新為它指定一個(gè)唯一的ID標(biāo)識(shí)。l編程時(shí)用的最多是靜態(tài)文本控件,它被用來作為其它控件的標(biāo)題。每一個(gè)靜態(tài)文本控件最多可以顯示255個(gè)字符,可以使用“n”換行符,并可以通過Styles頁面設(shè)置控件的風(fēng)格。6.3.5 編輯框編輯框l編編輯輯框框(Edit box)又稱文本框或編輯控件,它一般與靜態(tài)文本控件一起使用,用于數(shù)據(jù)的輸入和
40、輸出。編輯框提供了完整的鍵盤輸入和編輯功能,可以輸入各種文本、數(shù)字或者口令。l編輯框?yàn)橛脩籼峁┝肆己玫妮斎搿⑤敵龉δ?,能夠?qū)㈡I盤輸入的字符串轉(zhuǎn)化為要求的數(shù)據(jù)類型,并驗(yàn)證它是否符合輸入要求(字符串長(zhǎng)度或數(shù)值范圍)。通過前述對(duì)話框內(nèi)容的學(xué)習(xí)我們已經(jīng)知道,完成上述工作是利用了MFC提供的對(duì)話框數(shù)據(jù)交換(DDX)和數(shù)據(jù)驗(yàn)證(DDV)技術(shù)。l編輯框常用屬性:Multiline設(shè)置單行或多行編輯,Align text設(shè)置文本對(duì)齊方式,Number表示只能輸入數(shù)字,Password表示鍵入編輯框的字符都將顯示為“*”,Uppercase或Lowercase表示鍵入編輯框的字符全部轉(zhuǎn)換成大寫或小寫形式,Rea
41、d-Only表示只能輸出數(shù)據(jù)。l當(dāng)編輯框的文本被修改,會(huì)向父窗口發(fā)送消息,可以利用ClassWizard在對(duì)話框類中添加消息處理函 數(shù)。編 輯 框 發(fā) 送 消 息 有:EN_CHANGE、EN_KILLFOCUS、EN_SETFOCUS、EN_MAX TEXT、EN_UPDATE等。例例 編寫一個(gè)SDI應(yīng)用程序Password,程序啟動(dòng)后首先彈出一個(gè)如圖所示的用戶身份確認(rèn)對(duì)話框,當(dāng)用戶鍵入正確的口令后才能進(jìn)入程序的主界面。6.3.6 按鈕按鈕 按按鈕鈕(Button)包括按鍵按鈕、單選按鈕、復(fù)選框和組框等4種類型。雖然封裝按鈕控件的MFC類都是CButton類,但它們具有不同的功能。按鍵按鈕在
42、被按下時(shí)會(huì)立即執(zhí)行某個(gè)命令,也被稱為命令按鈕;單選按鈕用于在一組互相排斥的選項(xiàng)中選擇其中一項(xiàng);復(fù)選框用于在一組選項(xiàng)中選擇其中一項(xiàng)或多項(xiàng);組框可以使一組控件關(guān)聯(lián)起來。1.按鍵按鈕按鍵按鈕 l幾乎所有的對(duì)話框都使用簡(jiǎn)單的按鍵按鈕,如OK按鈕。通過Properties對(duì)話框可以設(shè)置按鈕的不同風(fēng)格,如通過設(shè)置Default button屬性設(shè)置一個(gè)默認(rèn)按鈕。默認(rèn)按鈕是指當(dāng)對(duì)話框剛顯示時(shí)的命令執(zhí)行按鈕,此時(shí)按下Enter鍵將執(zhí)行該按鈕的命令功能。一個(gè)對(duì)話框只能有一個(gè)Default button默認(rèn)按鈕,通常情況下將OK按鈕設(shè)置為默認(rèn)按鈕。l其它屬性:Owner draw利用WM_DRAWITEM消息處理
43、函數(shù)定制按鈕的外觀,Icon表示用圖標(biāo)代替原來的文本標(biāo)題,Bitmap表示用位圖代替原來的文本標(biāo)題,Client edge、Static edge、Modal frame用于設(shè)置按鈕的外觀。2.單選按鈕單選按鈕l單選按鈕是由一個(gè)圓圈和緊隨其后的文本標(biāo)題組成,當(dāng)它被選中時(shí),圓圈中就標(biāo)上一個(gè)黑點(diǎn)。l單選按鈕設(shè)置Auto自動(dòng)屬性為默認(rèn)屬性,Auto屬性表示用戶若選中同組中的某個(gè)單選按鈕,則自動(dòng)清除其余單選按鈕的選中狀態(tài),保證一組選項(xiàng)中始終只有一項(xiàng)被選中。l一般將一組單選按鈕放在一個(gè)組框中,在一組單選按鈕中,第一個(gè)(Tab鍵順序)按鈕最重要,其ID值可用于在對(duì)話框中為控件建立關(guān)聯(lián)的成員變量。必須為同組
44、中的第一個(gè)單選按鈕設(shè)置Group屬性,而同組的其它單選按鈕不可再設(shè)置Group屬性。3.復(fù)選框復(fù)選框l復(fù)選框是由一個(gè)空心方框和緊隨其后的文本組成,當(dāng)它被選中時(shí),空心方框中就加上一個(gè)“”或“”標(biāo)記。l不同于單選按鈕,在一組復(fù)選框中每次可以同時(shí)選擇多項(xiàng)。除了選中和沒選中兩種狀態(tài),復(fù)選框還有第三種狀態(tài),此時(shí)選中標(biāo)記顯示為暗色,它表示該項(xiàng)不可以由用戶選擇。通過設(shè)置Tri-state屬性得到這種三態(tài)復(fù)選框。另外,我們可以通過設(shè)置Push-like屬性使單選按鈕或復(fù)選框具有普通按鈕的外觀。按鈕控件發(fā)送的消息:按鈕控件發(fā)送的消息:l按鈕控件只能發(fā)送通知碼為BN_CLICKED(單擊按鈕)和BN_DOUBLE
45、CLICKED(雙擊按鈕)的WM_COMMAND消息,我們經(jīng)常需要編寫按鈕的BN_CLICKED消息處理函數(shù)。lCButton類提供了一些成員函數(shù)實(shí)現(xiàn)對(duì)按鈕控件對(duì)象的控制和管理,如利用成員函數(shù)GetCheck()或SetCheck()獲取或設(shè)置單選按鈕或復(fù)選框的當(dāng)前 狀 態(tài),利 用 成 員 函 數(shù) GetButtonStyle()或 SetButtonStyle()獲取或改變按鈕控件的風(fēng)格。例例 編寫一個(gè)對(duì)話框應(yīng)用程序ColrButn,對(duì)話框中有兩個(gè)用于選擇顏色模式的單選按鈕和三個(gè)用于選擇具體顏色的復(fù)選框,只有在彩色模式下才能選擇三種不同顏色的組合。當(dāng)用戶單擊“應(yīng)用”按鈕,對(duì)話框右邊的按鍵按鈕
46、將根據(jù)選擇的顏色實(shí)現(xiàn)按鈕的自畫。6.3.7 列表框列表框lWindows提供了幾個(gè)列表類型控件,如列表框、組合框、列表視控件和樹視控件,其中列表框是一種最簡(jiǎn)單的列表類型控件。l列列表表框框(List box)是一個(gè)列出了一些文本項(xiàng)的窗口,常用來顯示類型相同的一系列清單,如文件、字體和用戶等。與復(fù)選框類似,用戶可以選擇其中一項(xiàng)或多項(xiàng),但同時(shí)列表框中選項(xiàng)的數(shù)目和內(nèi)容可以動(dòng)態(tài)變化,用戶可往列表框中添加或刪除某些選項(xiàng)。l列表框有單選Single、多選Multiple、擴(kuò)展多選Extended、不選None四種風(fēng)格,在控件Properties屬性對(duì)話框的Selection下拉框中設(shè)置。l當(dāng)列表框中發(fā)生了
47、某個(gè)事件,列表框就會(huì)向其父窗口發(fā)送一條通知消息。列表框常用的通知消息有:用戶雙擊列表框中的列表項(xiàng)時(shí)發(fā)送消息LBN_DBLCLK,列表框失去鍵盤輸入焦點(diǎn)時(shí)發(fā)送消息LBN_KILLFOCUS,列表框獲得鍵盤輸入焦點(diǎn)時(shí)發(fā)送消息LBN_SETFOCUS,列表框中的當(dāng)前選擇項(xiàng)發(fā)生改變時(shí)發(fā)送消息LBN_SELCHANGE。l封裝列表框控件的MFC類是CListBox類,當(dāng)列表框創(chuàng)建之后,在程序中可以通過調(diào)用CListBox類成員函數(shù)來實(shí)現(xiàn)列表項(xiàng)的添加、刪除、修改和獲取等操作。例例 編寫一個(gè)對(duì)話框應(yīng)用程ExmpList,對(duì)話框中有一個(gè)列表框,當(dāng)用戶單擊列表框中的一個(gè)列表項(xiàng)(一個(gè)國(guó)家)時(shí),在四個(gè)編輯框分別顯示
48、指定國(guó)家的名稱、首都、面積和人口。單擊“添加”按鈕時(shí),“國(guó)家”編輯框中的文本將被添加到列表框中;單擊“刪除”按鈕時(shí),當(dāng)前的列表項(xiàng)將被刪除。6.3.8 組合框組合框l編輯框和列表框在使用時(shí)受到一些限制,編輯框允許用戶輸入文本內(nèi)容,但用戶卻不能直接選擇以前已輸入的文本內(nèi)容。列表框可列出各種可能的選項(xiàng),但用戶卻不能在列表框中輸入新的列表項(xiàng)。而組組合合框框(Combo box)吸收了列表框和編輯框的優(yōu)點(diǎn),它可以顯示列表項(xiàng)供用戶進(jìn)行選擇,也允許用戶輸入新的列表項(xiàng)。實(shí)質(zhì)上,組合框是多個(gè)控件的組合,包括編輯框、列表框和按鈕。l組合框有簡(jiǎn)單組合框(Simple)、下拉組合框(Dropdown)和下拉列表框(D
49、rop List)等三種形式,通過控件Properties屬性對(duì)話框Styles頁面的Type下拉框設(shè)置這三種形式。組合框控件的組合框控件的Data屬性屬性:與編輯框或列表框相比,組合框有一個(gè)新的功能屬性,可以通過組合框控件屬性對(duì)話框的Data頁面添加初始的列表項(xiàng)。注意,每輸入完一個(gè)列表項(xiàng),按下Ctrl+Enter鍵后才能換行輸入下一項(xiàng)。也可以在對(duì)話框類的初始化成員函數(shù)OnInitDialog()中編寫代碼添加列表項(xiàng)。組合框組合框發(fā)送的發(fā)送的消息消息:組合框消息有:關(guān)閉組合框消息CBN_CLOSEUP,打開列表框消息CBN_DROPDOWN,雙擊列表項(xiàng)消息CBN_DBLCLK,選擇一個(gè)列表項(xiàng)并
50、按下Enter鍵或單擊下拉按鈕隱藏列表框時(shí)發(fā)送消息CBN_SELENDOK,當(dāng)前選項(xiàng)被取消時(shí)(如重新選擇其它控件或關(guān)閉對(duì)話框)發(fā)送消息CBN_SELENDCANCEL,當(dāng)前選項(xiàng)改變消息CBN_SELCHANGE;當(dāng)組合框的編輯框中的文本被修改且新的文本顯示之后發(fā)送消息CBN_EDIT CHANGE,當(dāng)編輯框中的文本被修改且新的文本顯示之前發(fā)送消息CBN_EDITUPDATE;組合框失去鍵盤輸入焦點(diǎn)消息CBN_KILLFOCUS,組合框獲得鍵盤輸入焦點(diǎn)消息CBN_SETFOCUS。例例 編寫一個(gè)單文檔應(yīng)用程序ExmpCombo,執(zhí)行“測(cè)試控件|組合框”菜單命令時(shí)打開一個(gè)對(duì)話框,初始的對(duì)話框有一個(gè)
51、用于顯示標(biāo)準(zhǔn)控件名的組合框,當(dāng)用戶在組合框下拉的列表框中選擇一個(gè)控件時(shí),該控件將顯示在對(duì)話框的右部。當(dāng)用戶在組合框的編輯框中輸入一個(gè)列表項(xiàng)并單擊“應(yīng)用”按鈕,一個(gè)指定標(biāo)題的靜態(tài)文本控件將出現(xiàn)在對(duì)話框的右部。6.3.9 滾動(dòng)條滾動(dòng)條l滾滾動(dòng)動(dòng)條條作為一個(gè)獨(dú)立的控件,其主要作用通過可視化的滾動(dòng)操作實(shí)現(xiàn)程序設(shè)計(jì)所要求的功能,如滾動(dòng)顯示數(shù)據(jù)內(nèi)容、在一個(gè)有效范圍內(nèi)選取合適的數(shù)值等。l滾動(dòng)條分為垂直滾動(dòng)條和水平滾動(dòng)條兩種類型。滾動(dòng)條兩端有兩個(gè)箭頭按鈕,中間有一個(gè)可沿滾動(dòng)條方向移動(dòng)的滾動(dòng)塊。l當(dāng) 移 動(dòng) 滾 動(dòng) 條 時(shí) 發(fā) 送 消 息 WM_HSCROLL或WM_VSCROLL。滾動(dòng)消息含有通知碼,表示用戶 對(duì) 滾 動(dòng) 條 的 操 作 方 式,如 SB_LINEUP和SB_LINEDOWN表示向上或下滾動(dòng)一行(或一個(gè)單位),SB_PAGEUP表示向上滾動(dòng)一頁。
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 物業(yè)管理制度:常見突發(fā)緊急事件應(yīng)急處置程序和方法
- 某物業(yè)公司冬季除雪工作應(yīng)急預(yù)案范文
- 物業(yè)管理制度:小區(qū)日常巡查工作規(guī)程
- 物業(yè)管理制度:設(shè)備設(shè)施故障應(yīng)急預(yù)案
- 某物業(yè)公司小區(qū)地下停車場(chǎng)管理制度
- 某物業(yè)公司巡查、檢查工作內(nèi)容、方法和要求
- 物業(yè)管理制度:安全防范十大應(yīng)急處理預(yù)案
- 物業(yè)公司巡查、檢查工作內(nèi)容、方法和要求
- 某物業(yè)公司保潔部門領(lǐng)班總結(jié)
- 某公司安全生產(chǎn)舉報(bào)獎(jiǎng)勵(lì)制度
- 物業(yè)管理:火情火災(zāi)應(yīng)急預(yù)案
- 某物業(yè)安保崗位職責(zé)
- 物業(yè)管理制度:節(jié)前工作重點(diǎn)總結(jié)
- 物業(yè)管理:某小區(qū)消防演習(xí)方案
- 某物業(yè)公司客服部工作職責(zé)