第10章基本控件使用(二)_第1頁
第10章基本控件使用(二)_第2頁
第10章基本控件使用(二)_第3頁
第10章基本控件使用(二)_第4頁
第10章基本控件使用(二)_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第第1010章章 基本控件使用基本控件使用( (二二) )第第1010章章 基本控件使用基本控件使用( (二二) )第第1010章章 基本控件使用基本控件使用( (二二) )第第1010章章 基本控件使用基本控件使用( (二二) )10.1 按鈕類按鈕類10.2 列表框類列表框類10.3 應(yīng)用實(shí)例應(yīng)用實(shí)例第第1010章章 基本控件使用基本控件使用( (二二) )10.1 按鈕類按鈕類 按鈕是一個(gè)矩形窗口,通常包含一個(gè)標(biāo)題用來說明按鈕的按鈕是一個(gè)矩形窗口,通常包含一個(gè)標(biāo)題用來說明按鈕的作用。作用。 CButton(按鈕控件按鈕控件)類是從類是從CWnd類繼承下來的。類繼承下來的。 CCmdTar

2、get CObject CWnd CButton第第1010章章 基本控件使用基本控件使用( (二二) )10.1.1 按鈕類的結(jié)構(gòu)按鈕類的結(jié)構(gòu) VC+在在Afxwin.h中定義了中定義了CButton類的結(jié)構(gòu),結(jié)構(gòu)代碼:類的結(jié)構(gòu),結(jié)構(gòu)代碼:class CButton : public CWndDECLARE_DYNAMIC(CButton)public:CButton(); / ConstructorsBOOL Create(LPCTSTR lpszCaption, DWORD dwStyle,const RECT& rect, CWnd* pParentWnd, UINT nID)

3、;/ AttributesUINT GetState() const;void SetState(BOOL bHighlight);int GetCheck() const;void SetCheck(int nCheck);UINT GetButtonStyle() const;void SetButtonStyle(UINT nStyle, BOOL bRedraw = TRUE);第第1010章章 基本控件使用基本控件使用( (二二) )#if (WINVER = 0 x400)HICON SetIcon(HICON hIcon);HICON GetIcon() const;HBITMA

4、P SetBitmap(HBITMAP hBitmap);HBITMAP GetBitmap() const;HCURSOR SetCursor(HCURSOR hCursor);HCURSOR GetCursor();#endif/ Overridables (for owner draw only) virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);/ Implementationpublic:virtual CButton();protected:virtual BOOL OnChildNotify(UINT, WPARAM

5、, LPARAM, LRESULT*);第第1010章章 基本控件使用基本控件使用( (二二) )CButton類中按鈕特有的樣式類中按鈕特有的樣式樣樣式式宏宏 說說 明明 BS_3STATE BS_AUTO3STATE BS_AUTOCHECKBOX BS_AUTORADIOBUTTON BS_CHECKBOX BS_DEFPUSHBUTTON BS_GROUPBOX BS_LEFTTEXT BS_OWNERDRAW BS_PUSHBUTTON BS_RADIOBUTTON 此此樣樣式式為為復(fù)復(fù)選選框框,但但是是方方框框可可以以被被選選中中,也也可可以以不不選選(表表明明復(fù)復(fù)選選框框無無效效

6、) 此此樣樣式式為為復(fù)復(fù)選選框框,但但是是方方框框可可以以被被選選中中,也也可可以以不不選選(表表明明復(fù)復(fù)選選框框無無效效), 當(dāng)當(dāng)用用戶戶選選擇擇方方框框時(shí)時(shí),它它的的選選中中狀狀態(tài)態(tài)會會自自動動轉(zhuǎn)轉(zhuǎn)換換 此此樣樣式式為為復(fù)復(fù)選選框框,當(dāng)當(dāng)用用戶戶選選擇擇方方框框時(shí)時(shí),它它的的選選中中狀狀態(tài)態(tài)會會自自動動轉(zhuǎn)轉(zhuǎn)換換 此此樣樣式式為為單單選選按按鈕鈕,當(dāng)當(dāng)用用戶戶選選中中圓圓圈圈時(shí)時(shí),按按鈕鈕自自動動顯顯示示自自己己被被選選中中的的狀狀 態(tài)態(tài),同同時(shí)時(shí)使使其其他他具具有有相相同同樣樣式式的的同同組組的的單單選選按按鈕鈕處處于于不不被被選選中中的的狀狀態(tài)態(tài) 創(chuàng)創(chuàng)建建一一個(gè)個(gè)復(fù)復(fù)選選框框,默默認(rèn)認(rèn)情

7、情況況下下它它的的右右邊邊有有標(biāo)標(biāo)題題,當(dāng)當(dāng)與與 BS_LEFTTEXT 一一 起起使使用用時(shí)時(shí),標(biāo)標(biāo)題題在在左左邊邊 創(chuàng)創(chuàng)建建一一個(gè)個(gè)下下壓壓式式按按鈕鈕 創(chuàng)創(chuàng)建建一一個(gè)個(gè)帶帶標(biāo)標(biāo)題題的的分分組組框框 和和一一個(gè)個(gè)單單選選按按鈕鈕或或復(fù)復(fù)選選按按鈕鈕一一起起使使用用時(shí)時(shí),使使得得按按鈕鈕文文字字出出現(xiàn)現(xiàn)在在按按鈕鈕的的左左邊邊 創(chuàng)創(chuàng)建建自自定定義義按按鈕鈕,當(dāng)當(dāng)按按鈕鈕外外形形被被改改變變時(shí)時(shí),MFC 自自動動調(diào)調(diào)用用 DrawItem()方方法法, 在在使使用用 BitmapButton 類類時(shí)時(shí),這這種種樣樣式式必必須須被被指指定定 創(chuàng)創(chuàng)建建下下壓壓式式按按鈕鈕,用用戶戶單單擊擊此此按按

8、鈕鈕時(shí)時(shí),向向系系統(tǒng)統(tǒng)發(fā)發(fā)送送 M_COMMAND 消消息息 創(chuàng)創(chuàng)建建單單選選按按鈕鈕 第第1010章章 基本控件使用基本控件使用( (二二) )10.1.2 按鈕類的方法按鈕類的方法按鈕類按鈕類(CButton類類)提供的訪問方法提供的訪問方法第第1010章章 基本控件使用基本控件使用( (二二) )10.2 列表框類列表框類 CListBox類在類在MFC類層次結(jié)構(gòu)中的位置。類層次結(jié)構(gòu)中的位置。 CCmdTarget CObject CWnd CListBox第第1010章章 基本控件使用基本控件使用( (二二) )10.2.1 列表框類的結(jié)構(gòu)列表框類的結(jié)構(gòu) 結(jié)構(gòu)見教材結(jié)構(gòu)見教材P241,

9、列表框控件可用的樣式:,列表框控件可用的樣式:樣 式 說 明 LBS_DISABLENOSCROLL LBS_EXTENDSEL LBS_HASSTRINGS LBS_MULTICOLUMN LBS_MULTIPLESEL LBS_NOINTEGRALHEIGHT LBS_NOREDRAW LBS_NOSEL LBS_NOTIFY LBS_OWNERDRAWFIXED LBS_OWNERDRAWVARIABLE LBS_SORT LBS_STANDARD LBS_USETABSTOPS LBS_WANTKEYBOARDINPUT 當(dāng)當(dāng)列列表表框框不不需需要要滾滾動動條條時(shí)時(shí),滾滾動動條條無無效

10、效 允允許許使使用用鼠鼠標(biāo)標(biāo)及及特特殊殊鍵鍵組組合合進(jìn)進(jìn)行行多多項(xiàng)項(xiàng)選選擇擇 指指明明一一個(gè)個(gè)自自繪繪的的列列表表框框,其其中中包包括括字字符符串串選選項(xiàng)項(xiàng),列列表表框框負(fù)負(fù)責(zé)責(zé)為為字字符符串串分分配配內(nèi)內(nèi)存存,指指定定項(xiàng)項(xiàng)的的文文字字可可以以用用 GetTexT()方方法法檢檢索索 指指明明一一個(gè)個(gè)多多列列列列表表框框,它它含含有有一一個(gè)個(gè)水水平平滾滾動動條條,可可以以用用 SetColumnWidth()方方法法設(shè)設(shè)置置列列的的寬寬度度 用用戶戶通通過過單單擊擊或或雙雙擊擊一一項(xiàng)項(xiàng)進(jìn)進(jìn)行行選選擇擇或或取取消消選選擇擇 將將列列表表框框設(shè)設(shè)置置為為創(chuàng)創(chuàng)建建時(shí)時(shí)指指定定的的大大小小 列列表表框

11、框在在變變化化時(shí)時(shí)不不重重繪繪,可可以以在在任任何何時(shí)時(shí)候候發(fā)發(fā)送送 WM_SETREDRAW消消息息改改變變這這種種模模式式 指指明明列列表表框框包包含含只只能能看看不不能能選選擇擇的的項(xiàng)項(xiàng) 當(dāng)當(dāng)用用戶戶單單擊擊或或雙雙擊擊時(shí)時(shí)向向父父窗窗口口發(fā)發(fā)送送消消息息 指指明明列列表表框框的的所所有有者者負(fù)負(fù)責(zé)責(zé)填填寫寫列列表表項(xiàng)項(xiàng),且且列列表表框框具具有有相相同同的的高高度度 指指明明列列表表框框的的所所有有者者負(fù)負(fù)責(zé)責(zé)填填寫寫列列表表項(xiàng)項(xiàng),且且列列表表框框可可以以有有不不同同高高度度 列列表表項(xiàng)項(xiàng)按按字字母母順順序序排排列列 此此樣樣式式是是 LBS_NOTIFY、LBS_SORT、WS_VSC

12、ROLL 和和 WS_BORDER 的的組組合合 告告知知列列表表框框在在加加入入字字符符串串列列表表項(xiàng)項(xiàng)時(shí)時(shí)加加入入 Tab 字字符符 允允許許應(yīng)應(yīng)用用程程序序發(fā)發(fā)送送 WM_VKEYTOITEM 和和 WM_CHARTOITEM 消消息息給給列列表表框框的的所所有有者者來來處處理理鍵鍵盤盤輸輸入入 第第1010章章 基本控件使用基本控件使用( (二二) )消息映像項(xiàng)消息映像項(xiàng)說明說明ON_LBN_DBLCLK雙擊,具有雙擊,具有LBS_NOTIFY樣式的列表框向樣式的列表框向所有者發(fā)送此消息所有者發(fā)送此消息ON_LBN_ERRSPACE列表框不能分配足夠內(nèi)存以滿足要求列表框不能分配足夠內(nèi)存

13、以滿足要求ON_LBN_KILLFOCUS當(dāng)列表框失去輸入焦點(diǎn)時(shí)出現(xiàn)此消息當(dāng)列表框失去輸入焦點(diǎn)時(shí)出現(xiàn)此消息ON_LBN_SELCANCEL取消當(dāng)前選擇時(shí),具有取消當(dāng)前選擇時(shí),具有LBS_NOTIFY樣式樣式的列表框向所有者發(fā)送此消息的列表框向所有者發(fā)送此消息ON_LBN_SELCHANGE當(dāng) 列 表 框 中 的 選 擇 改 變 時(shí) , 具 有當(dāng) 列 表 框 中 的 選 擇 改 變 時(shí) , 具 有LBS_NOTIFY樣式的列表框向它的父窗口樣式的列表框向它的父窗口 發(fā)送此通知發(fā)送此通知列表框類的結(jié)構(gòu)列表框類的結(jié)構(gòu)列表框的消息映像項(xiàng),用于處理列表框通知。列表框的消息映像項(xiàng),用于處理列表框通知。第第

14、1010章章 基本控件使用基本控件使用( (二二) )10.2.2 列表框類的方法列表框類的方法1 1通用通用 方法方法 方方法法 描描述述 GetCount() 獲獲得得列列表表框框中中列列表表項(xiàng)項(xiàng)數(shù)數(shù)目目 GetHorizontalExtent() 獲獲得得列列表表框框的的水水平平滾滾動動寬寬度度(按按像像素素) GetItemData() 獲獲得得列列表表框框項(xiàng)項(xiàng)有有關(guān)關(guān)的的 32 位位值值 GetItemDataPtr() 獲獲得得指指向向列列表表框框項(xiàng)項(xiàng)的的指指針針 GetItemHeight() 獲獲得得列列表表框框中中項(xiàng)項(xiàng)的的高高度度 GetSel() 確確定定列列表表框框項(xiàng)項(xiàng)的

15、的選選擇擇狀狀態(tài)態(tài) GetText() 把把列列表表框框中中字字符符串串復(fù)復(fù)制制到到緩緩沖沖區(qū)區(qū) GetTextLen() 返返回回列列表表框框字字符符串串的的長長度度(按按字字節(jié)節(jié)) GetTopIndex() 獲獲得得列列表表框框中中第第一一個(gè)個(gè)可可見見項(xiàng)項(xiàng)的的下下標(biāo)標(biāo)(基基于于 0) ItemFromPoint() 確確定定和和返返回回離離某某點(diǎn)點(diǎn)最最近近的的列列表表框框項(xiàng)項(xiàng)的的下下標(biāo)標(biāo) SetColumnWidth() 設(shè)設(shè)置置多多列列列列表表框框的的列列寬寬度度 SetHorizontalExtent() 設(shè)設(shè)置置列列表表框框的的水水平平滾滾動動寬寬度度(按按像像素素) SetIte

16、mData() 設(shè)設(shè)置置與與一一列列表表框框項(xiàng)項(xiàng)有有關(guān)關(guān)的的 32 位位值值 SetDataPtr() 設(shè)設(shè)置置一一列列表表框框項(xiàng)項(xiàng)的的指指針針 SetItemHeight() 設(shè)設(shè)置置列列表表框框中中項(xiàng)項(xiàng)的的高高度度 SetLocale() 設(shè)設(shè)置置列列表表框框的的位位置置標(biāo)標(biāo)識識(LCID) SetTabStops() 設(shè)設(shè)置置列列表表框框的的制制表表位位(Tab_Stop)位位置置 GetTopIndex() 設(shè)設(shè)置置列列表表框框中中第第一一個(gè)個(gè)可可見見項(xiàng)項(xiàng)的的下下標(biāo)標(biāo)(基基于于 0) 第第1010章章 基本控件使用基本控件使用( (二二) )2單選列表框的方法單選列表框的方法列表框的默

17、認(rèn)模式是單選項(xiàng)模式;所有的通用方法均適用于單列表框的默認(rèn)模式是單選項(xiàng)模式;所有的通用方法均適用于單選項(xiàng)列表框。選項(xiàng)列表框。只有兩個(gè)類方只有兩個(gè)類方法專門處理單法專門處理單選項(xiàng)列表框選項(xiàng)列表框GetCurSel()SetCurSel()獲得當(dāng)前選擇列表獲得當(dāng)前選擇列表框項(xiàng)的下標(biāo)框項(xiàng)的下標(biāo)(基于基于0)選擇列表框字符串選擇列表框字符串第第1010章章 基本控件使用基本控件使用( (二二) )3多選列表框的方法多選列表框的方法 方法方法 說明說明 GetAnchorIndex()獲得多項(xiàng)選擇列表框中當(dāng)前定位項(xiàng)的下標(biāo)獲得多項(xiàng)選擇列表框中當(dāng)前定位項(xiàng)的下標(biāo)GetCaretIndex() 獲得多項(xiàng)選擇列表框

18、中具有光標(biāo)矩形的項(xiàng)的下標(biāo)獲得多項(xiàng)選擇列表框中具有光標(biāo)矩形的項(xiàng)的下標(biāo)GetSelCount()獲得多項(xiàng)選擇列表框中當(dāng)前所選的項(xiàng)的數(shù)目獲得多項(xiàng)選擇列表框中當(dāng)前所選的項(xiàng)的數(shù)目GetSelItems()將所有當(dāng)前被選列表框項(xiàng)下標(biāo)放入一整型數(shù)組緩沖區(qū)將所有當(dāng)前被選列表框項(xiàng)下標(biāo)放入一整型數(shù)組緩沖區(qū)SelItemRange() 切換多選擇列表框項(xiàng)范圍的選擇狀態(tài)切換多選擇列表框項(xiàng)范圍的選擇狀態(tài)SetAnchorIndex()在多項(xiàng)選擇列表框中擴(kuò)充選擇設(shè)置開始在多項(xiàng)選擇列表框中擴(kuò)充選擇設(shè)置開始(定位定位)項(xiàng)項(xiàng)SetCaretIndex() 在多項(xiàng)選擇列表框中指定下標(biāo)項(xiàng)設(shè)置光標(biāo)矩形在多項(xiàng)選擇列表框中指定下標(biāo)項(xiàng)設(shè)置

19、光標(biāo)矩形SetSel() 在多項(xiàng)選擇列表框中切換項(xiàng)目的選擇狀態(tài)在多項(xiàng)選擇列表框中切換項(xiàng)目的選擇狀態(tài)多選項(xiàng)列表框擴(kuò)展了多選項(xiàng)列表框擴(kuò)展了標(biāo)準(zhǔn)單項(xiàng)選擇列表框標(biāo)準(zhǔn)單項(xiàng)選擇列表框的能力,可以解決在的能力,可以解決在一個(gè)列表框中選擇多一個(gè)列表框中選擇多項(xiàng)帶來的復(fù)雜性項(xiàng)帶來的復(fù)雜性第第1010章章 基本控件使用基本控件使用( (二二) )4特定字符串方法特定字符串方法 方法方法 說明說明 AddString() 在列表框中加入一個(gè)字符串在列表框中加入一個(gè)字符串DeleteString() 從列表框中刪除一個(gè)字符串從列表框中刪除一個(gè)字符串Dir() 從當(dāng)前目錄加文件名放入列表框從當(dāng)前目錄加文件名放入列表框F

20、indString() 在列表框中搜索一字符串在列表框中搜索一字符串FindStringExact() 在列表框中搜索第一個(gè)與指定搜索字符串匹配的字符串在列表框中搜索第一個(gè)與指定搜索字符串匹配的字符串InsertString() 在列表框指定下標(biāo)處插入一字符串在列表框指定下標(biāo)處插入一字符串ResetContent() 清除列表框中的所有項(xiàng)清除列表框中的所有項(xiàng)SelectString() 在單選列表框中搜索并選擇一字符串在單選列表框中搜索并選擇一字符串適用于單選擇和多選擇兩種模式的列表框,這些方法處理列適用于單選擇和多選擇兩種模式的列表框,這些方法處理列表框中的字符串項(xiàng)。表框中的字符串項(xiàng)。第第1

21、010章章 基本控件使用基本控件使用( (二二) )5虛擬方法虛擬方法CListBox類還聲明了幾個(gè)虛擬方法,編程時(shí)可從類還聲明了幾個(gè)虛擬方法,編程時(shí)可從CListBox類中派類中派生一些類替換到應(yīng)用程序的類中。生一些類替換到應(yīng)用程序的類中。 方法方法 說明說明 CharToItem()可替換此方法為自繪列表框(沒有字符串)處理可替換此方法為自繪列表框(沒有字符串)處理WM_CHARCompareItem() 由由MFC調(diào)用以得到排序的自繪列表框中的新項(xiàng)的位置調(diào)用以得到排序的自繪列表框中的新項(xiàng)的位置DeleteItem()當(dāng)用戶從自繪列表框中刪除一項(xiàng)時(shí)當(dāng)用戶從自繪列表框中刪除一項(xiàng)時(shí)MFC調(diào)用此

22、方法調(diào)用此方法DrawItem()當(dāng)確定自繪列表框項(xiàng)必須重繪時(shí)當(dāng)確定自繪列表框項(xiàng)必須重繪時(shí)MFC調(diào)用此方法調(diào)用此方法MeasureItem()當(dāng)一自繪列表框被創(chuàng)建時(shí)當(dāng)一自繪列表框被創(chuàng)建時(shí)MFC調(diào)用此方法來決定列表框的維數(shù)調(diào)用此方法來決定列表框的維數(shù)VKeyToItem()可替換此方法,處理具有可替換此方法,處理具有LBS_WANTKEYBOARDINPUT樣樣 式的列表框的式的列表框的WM_KEYDOWN消息消息第第1010章章 基本控件使用基本控件使用( (二二) )10.3 按鈕類與列表框類的應(yīng)用實(shí)例按鈕類與列表框類的應(yīng)用實(shí)例例例10-1 編寫應(yīng)用程序編寫應(yīng)用程序第第1010章章 基本控件

23、使用基本控件使用( (二二) )1應(yīng)用程序的界面設(shè)計(jì)應(yīng)用程序的界面設(shè)計(jì)第第1010章章 基本控件使用基本控件使用( (二二) )1應(yīng)用程序的界面設(shè)計(jì)應(yīng)用程序的界面設(shè)計(jì)第第1010章章 基本控件使用基本控件使用( (二二) )對于成組的單選按鈕,只對于成組的單選按鈕,只在每組的第一個(gè)按鈕的屬在每組的第一個(gè)按鈕的屬性中選中性中選中Group設(shè)置設(shè)置在在Sex Selecting組組中只有中只有Boy單選按單選按鈕選中鈕選中Group屬性屬性在在Age Range組中只組中只有有“20”單選按鈕選單選按鈕選中中Group屬性屬性設(shè)計(jì)過程中,同一組單選按鈕設(shè)計(jì)過程中,同一組單選按鈕必須一個(gè)接一個(gè)地放進(jìn)

24、對話框必須一個(gè)接一個(gè)地放進(jìn)對話框中,中間不能插入其它的控件中,中間不能插入其它的控件第第1010章章 基本控件使用基本控件使用( (二二) )順序放置的原因:順序放置的原因:Visual C按照放入對話框中的先后順序,按照放入對話框中的先后順序,給每個(gè)控件賦一個(gè)給每個(gè)控件賦一個(gè)ID值,所以控件的值,所以控件的ID值是連續(xù)的。值是連續(xù)的。Group屬性的控件之間的控件為一組。屬性的控件之間的控件為一組。從從resource.h的資源頭文件中可得到的資源頭文件中可得到ID值值:#define IDC_SHOW_BUTTON 1006#define IDC_HIDE_BUTTON 1007#defi

25、ne IDC_Boy_RADIO 1008#define IDC_Girl_RADIO 1009#define IDC_Age1_RADIO 1010#define IDC_Age2_RADIO 1011#define IDC_Age3_RADIO 1012#define IDC_Show_Sex_Age_BUTTON 1013#define IDC_Result_EDIT 1014第第1010章章 基本控件使用基本控件使用( (二二) )2應(yīng)用程序的代碼編程部分應(yīng)用程序的代碼編程部分1) 給各個(gè)控件連接變量給各個(gè)控件連接變量(什么情況下需要連接變量?)(什么情況下需要連接變量?)第第1010

26、章章 基本控件使用基本控件使用( (二二) )2) 與有關(guān)按鈕控件的連接方法與有關(guān)按鈕控件的連接方法( 什么情況下需要定義消什么情況下需要定義消息響應(yīng)函數(shù)?)息響應(yīng)函數(shù)?)3) 方法的實(shí)現(xiàn)方法的實(shí)現(xiàn)(3.1) 給復(fù)選框給復(fù)選框IDC_DATE_CHECK添加代碼添加代碼void CSELECTBOXDlg :OnDataCheck() UpdateData(TRUE); /以當(dāng)前的屏幕顯示內(nèi)容更新控件的變量以當(dāng)前的屏幕顯示內(nèi)容更新控件的變量 if(m_DateCheck=TRUE) /若選中若選中Date則在編輯框中顯示日期則在編輯框中顯示日期 CTime tNow ; /創(chuàng)建創(chuàng)建CTime的

27、對象的對象tNow=CTime:GetCurrentTime(); /獲取當(dāng)前系統(tǒng)日期獲取當(dāng)前系統(tǒng)日期CString sNow=tNow.Format(%y.%m.%d); / %y.%B.%d /格式化格式化,并將時(shí)間值轉(zhuǎn)換為字符串類型,并將時(shí)間值轉(zhuǎn)換為字符串類型m_DateEdit.SetSel(0,-1); /選擇編輯框中的全部內(nèi)容選擇編輯框中的全部內(nèi)容m_DateEdit.ReplaceSel(sNow); /將編輯框替換為系統(tǒng)日期將編輯框替換為系統(tǒng)日期 else m_DateEdit.SetSel(0,-1);m_DateEdit.ReplaceSel( ); /編輯框顯示為空編輯框

28、顯示為空 / UpdateData(FALSE); ? m_DateEdit.SetWindowText(sNow);m_DateEdit.SetWindowText( );第第1010章章 基本控件使用基本控件使用( (二二) )CTime t = CTime:GetCurrentTime(); /獲取系統(tǒng)日期獲取系統(tǒng)日期int y=t.GetYear(); /獲取年份獲取年份int m=t.GetMonth(); /獲取月份獲取月份int d=t.GetDay(); /獲得幾號獲得幾號int h=t.GetHour(); /獲取時(shí)獲取時(shí)int mm=t.GetMinute(); /獲取分獲

29、取分int s=t.GetSecond(); /獲取秒獲取秒int w=t.GetDayOfWeek(); /獲取星期幾,注意獲取星期幾,注意1為星期天,為星期天,7為星期六為星期六其他獲取時(shí)間的函數(shù):其他獲取時(shí)間的函數(shù):GetLocalTime() /得到系統(tǒng)時(shí)間日期得到系統(tǒng)時(shí)間日期GetSystemTime() /返回的是格林威志標(biāo)準(zhǔn)時(shí)間返回的是格林威志標(biāo)準(zhǔn)時(shí)間第第1010章章 基本控件使用基本控件使用( (二二) )VC下的時(shí)間格式化下的時(shí)間格式化 %y Year without century, as decimal number(00-99) %Y Year with century

30、, as decimal number %m Month as decimal number(01-12) %b Abbreviated month name %B Full month name %d Day of month as decimal number(01-31) %H Hour in 24-hour format(00-23) %I Hour in 12-hour format(01-12) %p Current locales A.M./P.M. indicator for 12-hour clock %M Minute as decimal number(00-59) %S

31、 Second as decimal number(00-59) %a Abbreviated weekday name %A Full weekday name %c Date and time representation appropriate for locale %j Day of year as decimal number(001-366) %U Week of year as decimal number, with Sunday as first day of week(00-53) %w Weekday as decimal number(0-6; Sunday is 0)

32、 %W Week of year as decimal number, with Monday as first day of week(00-53) %x Date representation for current locale %X Time representation for current locale %z, %Z Either the time-zone name or time zone abbreviation, depending on registry settings; % Percent sign 例如例如:CString strDate=CTime:GetCur

33、rentTime().Format(%Y-%m-%d %H:%M:%S);void CSELECTBOXDlg :OnTimeCheck() UpdateData(TRUE); /以當(dāng)前的屏幕顯示內(nèi)容更新控件的變量以當(dāng)前的屏幕顯示內(nèi)容更新控件的變量 if(m_TimeCheck=TRUE) /若選中若選中Time則在編輯框中顯示時(shí)間則在編輯框中顯示時(shí)間 CTime tNow; /創(chuàng)建創(chuàng)建CTime的對象的對象tNow=CTime:GetCurrentTime(); /獲取當(dāng)前系統(tǒng)時(shí)間獲取當(dāng)前系統(tǒng)時(shí)間CString sNow=tNow.Format(“%I:%M:%S”); / 24小時(shí):小時(shí):

34、%H:%M:%Sm_TimeEdit.SetSel(0,-1);m_TimeEdit.ReplaceSel(sNow); /將編輯框替換為系統(tǒng)時(shí)間將編輯框替換為系統(tǒng)時(shí)間 elsem_TimeEdit.SetSel(0,-1);m_TimeEdit.ReplaceSel( ); /UpdateData(FALSE); 函數(shù)函數(shù)Format的參數(shù)的參數(shù)%I是時(shí)是時(shí)間的小時(shí)表示法(間的小時(shí)表示法(0112),),%m是分的表示法是分的表示法(0059),),%d是秒的表是秒的表示法(示法(0059) (3.2)為復(fù)選框?yàn)閺?fù)選框IDC_TIME_CHECK添加代碼添加代碼void CSELECTBOX

35、Dlg :OnEnableButton() GetDlgItem(IDC_DATE_CHECK)-EnableWindow(TRUE); /使復(fù)選框可選,函數(shù)返回指向?qū)ο蟮闹羔樅瘮?shù)使復(fù)選框可選,函數(shù)返回指向?qū)ο蟮闹羔樅瘮?shù) GetDlgItem(IDC_TIME_CHECK)-EnableWindow(TRUE); m_DateEdit.EnableWindow(TRUE); /使編輯框可用使編輯框可用 /也可表示成:也可表示成: GetDlgItem(IDC_DATE_EDIT)-EnableWindow(TRUE); m_TimeEdit.EnableWindow(TRUE); /也可表示成

36、:也可表示成:GetDlgItem(IDC_TIME_EDIT)-EnableWindow(TRUE); GetDlgItem是是CWnd類的成員函數(shù),類的成員函數(shù),return: A pointer to the given control or child window.關(guān)聯(lián)變量為關(guān)聯(lián)變量為BOOL型型關(guān)聯(lián)變量為關(guān)聯(lián)變量為CEdit型型(3.3) 給給Enable按鈕添加代碼按鈕添加代碼第第1010章章 基本控件使用基本控件使用( (二二) )void CSELECTBOXDlg :OnDisableButton() /使復(fù)選框不可選使復(fù)選框不可選GetDlgItem(IDC_DATE_C

37、HECK)-EnableWindow(FALSE);GetDlgItem(IDC_TIME_CHECK)-EnableWindow(FALSE); /使編輯框不可用使編輯框不可用m_DateEdit.EnableWindow(FALSE);m_TimeEdit.EnableWindow(FALSE); (3.4) 為為Disable按鈕連接代碼按鈕連接代碼第第1010章章 基本控件使用基本控件使用( (二二) )void CSELECTBOXDlg :OnShowButton() /使編輯框可見使編輯框可見GetDlgItem(IDC_DATE_CHECK)-EnableWindow(SW_S

38、HOW);GetDlgItem(IDC_TIME_CHECK)-EnableWindow(SW_SHOW);GetDlgItem(IDC_DATE_EDIT)-EnableWindow(SW_SHOW);m_DateEdit. ShowWindow(SW_SHOW);GetDlgItem(IDC_TIME_EDIT)-EnableWindow(SW_SHOW);m_TimeEdit. ShowWindow(SW_SHOW); 基類基類CWnd的成員函數(shù)的成員函數(shù)(3.5) 為為Show Again按鈕添加代碼按鈕添加代碼第第1010章章 基本控件使用基本控件使用( (二二) )void CSE

39、LECTBOXDlg :OnHideButton() /使編輯框不可見使編輯框不可見GetDlgItem(IDC_DATE_CHECK)-EnableWindow(SW_HIDE);GetDlgItem(IDC_TIME_CHECK)-EnableWindow(SW_HIDE);m_DateEdit. EnableWindow(SW_HIDE);m_DateEdit.ShowWindow(SW_HIDE);m_TimeEdit. EnableWindow(SW_HIDE); m_TimeEdit.ShowWindow(SW_HIDE); 基類基類CWnd的成員函數(shù)的成員函數(shù)(3.6) 為為Hi

40、de the Clock Setting按鈕添加實(shí)現(xiàn)代碼按鈕添加實(shí)現(xiàn)代碼第第1010章章 基本控件使用基本控件使用( (二二) )void CSELECTBOXDlg :OnShowSexAgeBUTTON() char sEdit50; /聲明字符串變量,用來存放顯示在編輯框中的字符聲明字符串變量,用來存放顯示在編輯框中的字符 int iSexRADIO; int iAgeRADIO; /表示選中按鈕的狀態(tài)表示選中按鈕的狀態(tài) /單選按鈕組的狀態(tài),返回被選按鈕的單選按鈕組的狀態(tài),返回被選按鈕的IDiSexRADIO=GetCheckedRadioButton(IDC_Boy_RADIO, ID

41、C_Girl_RADIO);if(iSexRADIO=IDC_Boy_RADIO)strcpy(sEdit, The boys age is); if(iSexRADIO=IDC_Girl_RADIO)strcpy(sEdit,The girls age is); /復(fù)制字符串到變量中復(fù)制字符串到變量中iAgeRADIO=GetCheckedRadioButton(IDC_Age1_RADIO, IDC_Age3_RADIO);if(iAgeRADIO=IDC_Age1_RADIO)strcat(sEdit, great than 20);if(iAgeRADIO=IDC_Age2_RADIO

42、)strcat(sEdit, between 15 and 20);if(iAgeRADIO=IDC_Age3_RADIO)strcat(sEdit, less than 15);m_ResultEdit.SetSel(0,-1); m_ResultEdit.ReplaceSel(sEdit); /選中并替換選中并替換 第一個(gè)第一個(gè)最后一個(gè)最后一個(gè)(3.7) 給給Show_the_Sex_and_Age按鈕添加代碼按鈕添加代碼第一個(gè)第一個(gè)最后一個(gè)最后一個(gè)m_ResultEdit.SetWindowText(sEdit);void CSELECTBOXDlg :OnShowComboButton

43、() UpdateData(TRUE); char sCourseEdit30; char sRecordEdit15; /編輯框中顯示編輯框中顯示course,record int iCourseRadio; /聲明選中的課程聲明選中的課程 iCourseRadio=GetCheckedRadioButton(IDC_ENGLISH_RADIO,IDC_NATURE_RADIO); /單選按鈕組的狀態(tài),返回被選按鈕的單選按鈕組的狀態(tài),返回被選按鈕的IDif(iCourseRadio=IDC_ENGLISH_RADIO) strcpy(sCourseEdit,English record is

44、 );if(iCourseRadio=IDC_COMPUTER_RADIO) strcpy(sCourseEdit,Computer record is );if(iCourseRadio=IDC_NATURE_RADIO)strcpy(sCourseEdit,Natural record is );m_Record.GetWindowText(sRecordEdit,15); /獲取列表框中選中的內(nèi)容獲取列表框中選中的內(nèi)容strcat(sCourseEdit, ); /字符串連接空格字符串連接空格strcat(sCourseEdit, sRecordEdit); /字符串連接分?jǐn)?shù)字符串連接分

45、數(shù)m_ComboEdit=_T(sCourseEdit); /或或m_ComboEdit=sCourseEdit; UpdateData(FALSE); /顯示更新顯示更新(3.8) 為為Show_Combo按鈕添加代碼按鈕添加代碼m_ComboEdit若定義為若定義為CEdit類型時(shí),可替換為類型時(shí),可替換為m_ComboEdit.SetSel(0,-1); m_ComboEdit.ReplaceSel(sCourseEdit);種類為種類為control,類型為,類型為CComboBoxint nSel;nSel = m_Record.GetCurSel();/選中的索引選中的索引m_Re

46、cord.GetLBText(nSel,sRecordEdit); /保存選中的內(nèi)容保存選中的內(nèi)容第第1010章章 基本控件使用基本控件使用( (二二) )void CSELECTBOXDlg :OnExitButton() OnOK(); (3.9) 給給OnExitButton()方法添加代碼方法添加代碼第第1010章章 基本控件使用基本控件使用( (二二) )BOOL CSELECTBOXDlg :OnInitDialog()CDialog:OnInitDialog();/ TODO: Add extra initialization here /初始化選中的按鈕初始化選中的按鈕Chec

47、kRadioButton(IDC_Boy_RADIO, IDC_Girl_RADIO, IDC_Boy_RADIO);CheckRadioButton(IDC_Age1_RADIO, IDC_Age3_RADIO, IDC_Age2_RADIO);m_English=1; /變量變量m_English的類型為的類型為int,設(shè)置初始選中第二個(gè)單選框設(shè)置初始選中第二個(gè)單選框m_Record.AddString(85);m_Record.AddString(90);m_Record.AddString(95);m_Record.SelectString(-1, 95); /默認(rèn)顯示的初始值默認(rèn)顯示

48、的初始值UpdateData(FALSE); /將控件的值更新屏幕將控件的值更新屏幕return TRUE; 第一個(gè)第一個(gè)最后一個(gè)最后一個(gè)選中的按鈕選中的按鈕ID添加列表框中的選項(xiàng)添加列表框中的選項(xiàng)4) 初始化單選按鈕初始化單選按鈕int SelectString( int nStartAfter, LPCTSTR lpszItem );nStartAfter:在要搜索的第一項(xiàng)之前包含項(xiàng)的從零開始的索引。:在要搜索的第一項(xiàng)之前包含項(xiàng)的從零開始的索引。 如果如果 nStartAfter 為為 1,整個(gè)列表框從開始處搜索。,整個(gè)列表框從開始處搜索。第第1010章章 基本控件使用基本控件使用( (二

49、二) )10.4 對話框通用控件對話框通用控件 大部分控件都是在對話框中使用的,無論是基于對話框的大部分控件都是在對話框中使用的,無論是基于對話框的應(yīng)用程序還是應(yīng)用程序還是Doc/View結(jié)構(gòu)的應(yīng)用程序,控件通常是放在結(jié)構(gòu)的應(yīng)用程序,控件通常是放在對話框中的。包括:對話框中的。包括:1. Picture控件控件2. Spin控件控件3. Progress控件控件4. Slider控件控件5. Date Time Picker控件控件 本節(jié)將以一個(gè)名為本節(jié)將以一個(gè)名為“Ctrl”的基于對話框的應(yīng)用程序來介紹的基于對話框的應(yīng)用程序來介紹各種各種Windows通用控件的使用。通用控件的使用。 第第1

50、010章章 基本控件使用基本控件使用( (二二) )1. Picture控件的使用控件的使用 (1)分隔線分隔線 將將Picture控件拖放到對話框中控件拖放到對話框中【Type】屬性選擇屬性選擇“Frame”【Color】屬性選擇屬性選擇“Etched”將控件拖到最細(xì),此時(shí)將控件拖到最細(xì),此時(shí)Picture控件象一條分隔線控件象一條分隔線第第1010章章 基本控件使用基本控件使用( (二二) )Picture控件的使用控件的使用(2) 圖片圖片將將【Type】屬性設(shè)置為屬性設(shè)置為“Icon”或者或者“Bitmap” 設(shè)置設(shè)置【Image】屬性為相應(yīng)的屬性為相應(yīng)的資源資源ID,顯示圖標(biāo)或位圖。

51、,顯示圖標(biāo)或位圖。 在資源中導(dǎo)入一位圖,命名為在資源中導(dǎo)入一位圖,命名為IDB_BITMAP_DOT,設(shè)置,設(shè)置Picture控件控件【Type】為為“Bitmap”,【Image】為為“IDB_BITMAP_DOT”第第1010章章 基本控件使用基本控件使用( (二二) )2. Spin控件的使用控件的使用 Spin按鈕控件提供了一對箭按鈕控件提供了一對箭頭,用戶通過點(diǎn)擊箭頭可以頭,用戶通過點(diǎn)擊箭頭可以微調(diào)該控件所表示的數(shù)值。微調(diào)該控件所表示的數(shù)值。Spin控件通常和控件通常和tab order位于它之前的位于它之前的控件成對使用。通控件成對使用。通過過CSpinButtonCtrl的的Ge

52、tBuddy方法可獲方法可獲得與之配對的控件得與之配對的控件 表示表示Spin控件的是控件的是CSpinButtonCtrl類類第第1010章章 基本控件使用基本控件使用( (二二) )成員成員描述描述CSpinButtonCtrlCreateSetBaseSetBuddySetPosSetRange構(gòu)造構(gòu)造CSpinButtonCtrl對象對象創(chuàng)建一個(gè)微調(diào)按鈕對象創(chuàng)建一個(gè)微調(diào)按鈕對象設(shè)置顯示的基,即以十進(jìn)制或十六進(jìn)制或其他設(shè)置顯示的基,即以十進(jìn)制或十六進(jìn)制或其他進(jìn)制顯示數(shù)據(jù)進(jìn)制顯示數(shù)據(jù)設(shè)置該控件的伙伴窗口設(shè)置該控件的伙伴窗口設(shè)置當(dāng)前位置設(shè)置當(dāng)前位置設(shè)置取值范圍設(shè)置取值范圍CSpinButto

53、nCtrl類常用成員類常用成員第第1010章章 基本控件使用基本控件使用( (二二) ) 在對話框中拖放一個(gè)在對話框中拖放一個(gè)Edit控件控件,設(shè)為,設(shè)為只讀只讀,然后拖放一個(gè),然后拖放一個(gè)Spin控件控件緊挨著剛才的緊挨著剛才的Edit控件,兩個(gè)控件的控件,兩個(gè)控件的ID都使用默認(rèn)都使用默認(rèn)值,設(shè)置值,設(shè)置Spin控件的控件的【Allignment】屬性為屬性為“Right”,選中,選中【Auto buddy】屬性屬性 BOOL CEx9_9Dlg:OnInitDialog() / TODO: Add extra initialization hereCSpinButtonCtrl* pSp

54、in =(CSpinButtonCtrl*) GetDlgItem(IDC_SPIN1);pSpin-SetRange(0, 100); /設(shè)置設(shè)置Spin的范圍是的范圍是0100pSpin-SetPos(50); /當(dāng)前位置是當(dāng)前位置是50pSpin-GetBuddy()-SetWindowText(5.0); /設(shè)置配對控件的顯示值設(shè)置配對控件的顯示值 return TRUE; 第第1010章章 基本控件使用基本控件使用( (二二) ) 在對話框中添加在對話框中添加WM_VSCROLL消息(消息(SPIN控件上下滾動控件上下滾動消息)的響應(yīng):消息)的響應(yīng):void CEx9_9Dlg:On

55、VScroll() /若操作對象為若操作對象為SPIN控件控件 if (pScrollBar-GetDlgCtrlID() = IDC_SPIN1) CString strValue; /創(chuàng)建字符串對象創(chuàng)建字符串對象 strValue.Format(%3.1f, (double) nPos / 10.0); /格式化輸出內(nèi)容格式化輸出內(nèi)容 (CSpinButtonCtrl*)pScrollBar)-GetBuddy()-SetWindowText(strValue); /獲取伙伴編輯框進(jìn)行顯示獲取伙伴編輯框進(jìn)行顯示 CDialog:OnVScroll(nSBCode, nPos, pScrol

56、lBar); 保證微調(diào)保證微調(diào)步長為步長為0.1第第1010章章 基本控件使用基本控件使用( (二二) )3. Progress控件的使用控件的使用 進(jìn)度控件用來指示長時(shí)間操作的進(jìn)度控件用來指示長時(shí)間操作的進(jìn)展程度。包括從左到右使用系進(jìn)展程度。包括從左到右使用系統(tǒng)高亮顏色顯示漸進(jìn)過程的矩形。統(tǒng)高亮顏色顯示漸進(jìn)過程的矩形。 MFC中表示進(jìn)度控制的是中表示進(jìn)度控制的是CProgressCtrl類類 。進(jìn)度條有一個(gè)范圍和進(jìn)度條有一個(gè)范圍和當(dāng)前位置當(dāng)前位置。范圍表示整個(gè)操作的持續(xù)時(shí)間,。范圍表示整個(gè)操作的持續(xù)時(shí)間,當(dāng)前位置表示當(dāng)前進(jìn)行的位置,進(jìn)度條根據(jù)當(dāng)前位置來判斷進(jìn)當(dāng)前位置表示當(dāng)前進(jìn)行的位置,進(jìn)度條

57、根據(jù)當(dāng)前位置來判斷進(jìn)行的百分比,并顯示進(jìn)度行的百分比,并顯示進(jìn)度 。成員成員描述描述CProgressCtrlCreateSetPos GetPos構(gòu)造構(gòu)造CProgressCtrl對象對象創(chuàng)建進(jìn)度條對象創(chuàng)建進(jìn)度條對象設(shè)置當(dāng)前位置設(shè)置當(dāng)前位置獲取當(dāng)前位置獲取當(dāng)前位置成員成員描述描述SetRangeSetStepStepIt設(shè)置取值范圍設(shè)置取值范圍設(shè)置步長設(shè)置步長前進(jìn)一步前進(jìn)一步第第1010章章 基本控件使用基本控件使用( (二二) ) 添加一個(gè)添加一個(gè)Progress控件,保持默認(rèn)控件,保持默認(rèn)ID,設(shè)置,設(shè)置Smooth屬性。在旁屬性。在旁邊添加一個(gè)按鈕,設(shè)置邊添加一個(gè)按鈕,設(shè)置ID為為“I

58、DC_BUTTON_START”,Caption為為“開始開始” 。在在OnInitDialog中添加如下代碼:中添加如下代碼:CProgressCtrl* pProg =(CProgressCtrl*) GetDlgItem(IDC_PROGRESS1); /設(shè)置指向進(jìn)度條的指針設(shè)置指向進(jìn)度條的指針pProg-SetRange(0, 100); /設(shè)置范圍為設(shè)置范圍為0100pProg-SetPos(50); /設(shè)置當(dāng)前位置為設(shè)置當(dāng)前位置為50為為“開始開始”按鈕添加點(diǎn)擊事件實(shí)現(xiàn)代碼:按鈕添加點(diǎn)擊事件實(shí)現(xiàn)代碼:void CEx9_9Dlg:OnButtonStart() CProgressC

59、trl* pProg=(CProgressCtrl*)GetDlgItem(IDC_PROGRESS1); pProg-SetPos(0); /設(shè)置初始值為設(shè)置初始值為0 SetTimer(1000,100,NULL); /啟動計(jì)時(shí)器,自動調(diào)用啟動計(jì)時(shí)器,自動調(diào)用OnTimer()函數(shù)函數(shù) /計(jì)時(shí)器計(jì)時(shí)器ID為為1000,100毫秒為單位毫秒為單位第第1010章章 基本控件使用基本控件使用( (二二) )在在CCtrlDlg中添加對中添加對WM_TIMER消息的響應(yīng)函數(shù):消息的響應(yīng)函數(shù):void CEx9_9Dlg:OnTimer(UINT nIDEvent) if(nIDEvent = 10

60、00) /根據(jù)根據(jù)ID判斷計(jì)時(shí)器判斷計(jì)時(shí)器 CProgressCtrl* pProg = (CProgressCtrl*) GetDlgItem(IDC_PROGRESS1); pProg-SetPos(pProg-GetPos()+1); /前進(jìn)一步前進(jìn)一步 if(pProg-GetPos() = 100) /判斷是否達(dá)到最大值判斷是否達(dá)到最大值 KillTimer(nIDEvent); /終止計(jì)時(shí)器終止計(jì)時(shí)器AfxMessageBox(進(jìn)行完畢進(jìn)行完畢); CDialog:OnTimer(nIDEvent); 每隔每隔0.1秒,進(jìn)秒,進(jìn)度條前進(jìn)一步度條前進(jìn)一步 第第1010章章 基本控件使用基本控

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論