




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第14章 按鈕控件與列表框控件,Cbutton及CBitmapButton類(lèi)在MFC窗口類(lèi)的層次結(jié)構(gòu)中的位置,14.1 按鈕類(lèi)與列表框類(lèi)簡(jiǎn)介,MFC調(diào)用方法DrawItem()自動(dòng)在一個(gè)按鈕的用戶區(qū)上畫(huà)上位圖,即用戶可以自定義按鈕。,有時(shí)必須調(diào)整位圖的尺寸大小,可以通過(guò)SizeToContent()方法進(jìn)行調(diào)整,列表框類(lèi)的結(jié)構(gòu)和方法,MFC中CListBox類(lèi)的層次結(jié)構(gòu),列表框經(jīng)常用在對(duì)話框里,如用列表框選擇文件名、目錄等。列表框有一個(gè)預(yù)定義的鍵盤(pán)接口,用戶可以用鍵盤(pán)上的箭頭和PageUp或PageDown鍵在列表框中進(jìn)行數(shù)據(jù)的選擇,或通過(guò)適當(dāng)?shù)臉邮皆O(shè)置,允許與Shift或Ctrl鍵組合使用。
2、,列表框常應(yīng)用于從眾多數(shù)據(jù)中選某一項(xiàng),(1) 通用方法,通用方法用來(lái)獲得和設(shè)置列表框數(shù)據(jù)的值和屬性,所有的CListBox列表框都有這些方法,包括單選列表框、多選列表框和自繪列表框等。,(2) 單項(xiàng)選擇特定方法,列表框的默認(rèn)模式是單選項(xiàng)模式;所有的通用方法均適用于單選項(xiàng)列表框。,方法 說(shuō)明 GetAnchorIndex()獲得多項(xiàng)選擇列表框中當(dāng)前定位項(xiàng)的下標(biāo) GetCaretIndex() 獲得多項(xiàng)選擇列表框中具有光標(biāo)矩形的項(xiàng)的下標(biāo) GetSelCount()獲得多項(xiàng)選擇列表框中當(dāng)前所選的項(xiàng)的數(shù)目 GetSelItems()將所有當(dāng)前被選列表框項(xiàng)下標(biāo)放入一整型數(shù)組緩沖區(qū) SelItemRang
3、e() 切換多選擇列表框項(xiàng)范圍的選擇狀態(tài) SetAnchorIndex()在多項(xiàng)選擇列表框中擴(kuò)充選擇設(shè)置開(kāi)始(定位)項(xiàng) SetCaretIndex() 在多項(xiàng)選擇列表框中指定下標(biāo)項(xiàng)設(shè)置光標(biāo)矩形 SetSel() 在多項(xiàng)選擇列表框中切換項(xiàng)目的選擇狀態(tài),(3) 多項(xiàng)選擇特定方法,多選項(xiàng)列表框擴(kuò)展了 標(biāo)準(zhǔn)單項(xiàng)選擇列表框 的能力,可以解決在 一個(gè)列表框中選擇多 項(xiàng)帶來(lái)的復(fù)雜性,特定多項(xiàng)選擇列表 框的CListBox類(lèi)方法,(4) 字符串指定的方法,方法 說(shuō)明 AddString() 在列表框中加入一個(gè)字符串 DeleteString() 從列表框中刪除一個(gè)字符串 Dir() 從當(dāng)前目錄加文件名放入列表
4、框 FindString() 在列表框中搜索一字符串 FindStringExact() 在列表框中搜索第一個(gè)與指定搜索字符串匹配的字符串 InsertString() 在列表框指定下標(biāo)處插入一字符串 ResetContent() 清除列表框中的所有項(xiàng) SelectString() 在單選列表框中搜索并選擇一字符串,CListBox指定列表 框中字符串的方法,(5) 虛擬方法,CLstBox類(lèi)還聲明了幾個(gè)虛擬方法,你可以從CListBox類(lèi)中派生一些類(lèi)替換到你的類(lèi)中。,創(chuàng)建和初始化CListBox對(duì)象,(1) 用C+關(guān)鍵字new和構(gòu)造函數(shù)CListBox:CListBox() 為CListBo
5、x對(duì)象分配一個(gè)實(shí)例。,例如,下面代碼分配一個(gè)CListBox對(duì)象并返回指向該對(duì)象的指針: ClistBox *pMyListBox=new CListBox; 指針pMyListBox用CListBox:Create()方法進(jìn)行初始化。 該方法聲明如下: BOOL Create ( DWORD dwStyle, / dwStyle是列表框控件的窗口樣式 const Recy if(m_TimeCheck=TRUE) CTime tNow; tNow=CTime:GetCurrentTime(); CString sNow=tNow.Format(%I:%M:%S); m_TimeEdit.Se
6、tSel(0,-1); m_TimeEdit.ReplaceSel(sNow); else m_TimeEdit.SetSel(0,-1); m_TimeEdit.ReplaceSel(); UpdateData(FALSE); 其中函數(shù)Format的參數(shù)%I是時(shí)間的小時(shí)表示法(01到12),%m是分的表示法(00到59),%S是秒的表示法(00到59),給Enable按鈕添加代碼,OnEnableButton()方法的實(shí)現(xiàn)代碼如下: void CSELECTBOXDlg:OnEnableButton() / 在此處加入控件通知句柄代碼 /添加代碼開(kāi)始 GetDlgItem(IDC_DATE_
7、CHECK)-EnableWindow(TRUE); GetDlgItem(IDC_TIME_CHECK)-EnableWindow(TRUE); m_DateEdit.EnableWindow(TRUE); m_TimeEdit.EnableWindow(TRUE); /添加代碼結(jié)束 ,為Disable按鈕連接代碼,OnDisableButton()方法的實(shí)現(xiàn)代碼如下: void CSELECTBOXDlg:OnDisableButton() / 在此處加入控件通知句柄代碼 /添加代碼開(kāi)始 GetDlgItem(IDC_DATE_CHECK)-EnableWindow(FALSE); Get
8、DlgItem(IDC_TIME_CHECK)-EnableWindow(FALSE); m_DateEdit.EnableWindow(FALSE); m_TimeEdit.EnableWindow(FALSE); /添加代碼結(jié)束 ,為Show Again按鈕添加代碼,在函數(shù)OnShowButton()方法中添加實(shí)現(xiàn)代碼如下: void CSELECTBOXDlg:OnShowButton() / 在此處加入控件通知句柄代碼 /添加代碼開(kāi)始 GetDlgItem(IDC_DATE_CHECK)-EnableWindow(SW_SHOW); GetDlgItem(IDC_TIME_CHECK)
9、-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); /添加代碼結(jié)束 ,為Hide the Clock Setting按鈕添加實(shí)現(xiàn)代碼,函數(shù)OnHideButton()方法中輸入以下實(shí)現(xiàn)代碼: void CSELECTBOXDlg:OnHideButton() / 在此處加入控件通
10、知句柄代碼 /添加代碼開(kāi)始 GetDlgItem(IDC_DATE_CHECK)-EnableWindow(SW_HIDE); GetDlgItem(IDC_TIME_CHECK)-EnableWindow(SW_HIDE); m_DateEdit.ShowWindow(SW_HIDE); m_TimeEdit.ShowWindow(SW_HIDE); /添加代碼結(jié)束 函數(shù)ShowWindow()是基類(lèi)CWnd的成員函數(shù),它表示是否顯示對(duì)象窗口,參數(shù)SW_SHOW表示顯示,SW_HIDE表示隱藏。,給Show_the_Sex_and_Age按鈕添加代碼,OnShowSexAgeButton()
11、方法的實(shí)現(xiàn)代碼如下: void CSELECTBOXDlg:OnShowSexAgeBUTTON() / 在此處加入控件通知句柄代碼 char sEdit50; int iSexRADIO; int iAgeRADIO; iSexRADIO=GetCheckedRadioButton(IDC_Boy_RADIO,IDC_Girl_RADIO); if(iSexRADIO=IDC_Boy_RADIO) strcpy(sEdit,The boys age is); if(iSexRADIO=IDC_Girl_RADIO) strcpy(sEdit,The girls age is); iAgeRA
12、DIO=GetCheckedRadioButton(IDC_Age1_RADIO,IDC_Age3_RADIO); if(iAgeRADIO=IDC_Age1_RADIO) strcat(sEdit, great than 20); if(iAgeRADIO=IDC_Age2_RADIO) 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); ,為S
13、how_Combo按鈕添加代碼,OnShowComboButton()方法的實(shí)現(xiàn)的代碼如下: void CSELECTBOXDlg:OnShowComboButton() UpdateData(TRUE); char sCourseEdit30; char sRecordEdit15; int iCourseRadio; iCourseRadio=GetCheckedRadioButton (IDC_ENGLISH_RADIO,IDC_NATURE_RADIO); if(iCourseRadio=IDC_ENGLISH_RADIO) strcpy(sCourseEdit,English rec
14、ord is ); 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); strcat(sCourseEdit,); strcat(sCourseEdit,sRecordEdit); m_ComboEdit=_T(sCourseEdit); UpdateData(FALS
15、E); ,給OnExitButton()方法添加代碼,OnExitButton()的實(shí)現(xiàn)代碼如下: void CSELECTBOXDlg:OnExitButton() / 在此處加入控件通知句柄代碼 /添加代碼開(kāi)始 OnOK(); /添加代碼結(jié)束 ,初始化單選按鈕,BOOL CSELECTBOXDlg:OnInitDialog() CDialog:OnInitDialog(); / IDM_ABOUTBOX must be in the system command range. ASSERT(IDM_ABOUTBOX ,SetIcon(m_hIcon, TRUE);/ Set big ico
16、n SetIcon(m_hIcon, FALSE);/ Set small icon / 在此加入其他初始化代碼(Add extra initialization here) CheckRadioButton(IDC_Boy_RADIO,IDC_Girl_RADIO,IDC_Boy_RADIO); CheckRadioButton(IDC_Age1_RADIO,IDC_Age3_RADIO,IDC_Age2_RADIO); UpdateData(FALSE); m_English=0; m_Record.AddString(85); m_Record.AddString(90); m_Reco
17、rd.AddString(95); m_Record.SelectString(-1,95); UpdateData(FALSE); return TRUE;/return TRUE unless you set the focus to a control ,如圖創(chuàng)建應(yīng)用程序,在“形狀”列表框中選擇要繪制圖形,在“筆顏色”下拉列表框選擇畫(huà)筆的顏色,在“刷子顏色”下拉列表框中選擇畫(huà)刷的顏色。在“線型”組合框選擇畫(huà)筆的線型,在“填充類(lèi)型”中選擇畫(huà)刷填充類(lèi)型。單擊“繪圖” 按鈕按照前面的選項(xiàng)繪制圖形,單擊“退出”按鈕退出程序。,靜態(tài)文本 IDC_STATIC 形狀 列表框 IDC_LIST_SHA
18、PE,靜態(tài)文本 IDC_STATIC 刷子顏色 下拉列表框 IDC_COMBO_BRUSHCOLOR,“筆顏色”下拉列表框-單擊鼠標(biāo)右鍵-Properties- Data選項(xiàng)卡- 輸入顏色(輸完一行后,按下Ctrl+Enter鍵)。 同理處理“畫(huà)刷顏色”下拉列表框,name ID Caption 組合框 IDC_STATIC 線型 單選按鈕 IDC_RADIO_SOLID Solid 單選按鈕 IDC_RADIO_DASH Dash 單選按鈕 IDC_RADIO_DOT Dot 單選按鈕 IDC_RADIO_DASHDOT DashDot,name ID Caption 組合框 IDC_STA
19、TIC 填充類(lèi)型 單選按鈕 IDC_RADIO_SOLIDBRUSH SolidBrush 單選按鈕 IDC_RADIO_CROSSCross 單選按鈕 IDC_RADIO_PDIAGONAL PDiagonal 單選按鈕 IDC_RADIO_BDIAGONAL BDiagonal,Solid -鼠標(biāo)右鍵 - Properties-選中Group選項(xiàng)。注意創(chuàng)建單選按鈕時(shí)要按照?qǐng)D中從上到下的順序,這樣保證了單選按鈕的ID值是連續(xù)的,才能保證兩組單選按鈕的互斥性。,下壓式按鈕 IDC_BTN_DRAW繪制 下壓式按鈕 IDOK退出,為對(duì)話框中控件連接變量 Control Ids變量類(lèi)型變量名稱(chēng) I
20、DC_LIST_SHAPECListBoxm_ListShape IDC_COMBO_PENCOLORCComboBoxm_ComboPenColor IDC_COMBO_BRUSHCOLORCComboBoxm_ComboBrushColor,在文件14_8Dlg中的消息處理函數(shù)OnInitDialog()中加入代碼如下: m_ListShape.AddString(Line); m_ListShape.AddString(Circle); m_ListShape.AddString(Rectangle); m_ListShape.AddString(RoundRectangle); 調(diào)用列
21、表框類(lèi)成員函數(shù)AddString()給列表框加入選項(xiàng),完成列表框的初始化,在Workspace窗口中,選擇ClassView卡,在類(lèi)CMy14_8Dlg上單擊鼠標(biāo)右鍵,選擇Add member variable菜單項(xiàng),加入public型變量如下所示: 變量類(lèi)型 變量名稱(chēng) 說(shuō)明 int m_nPenStyle 標(biāo)志由“線型”組合框中所選擇的畫(huà)筆的類(lèi)型 int m_nBrushStyle 標(biāo)志由“填充類(lèi)型”組合框中所選擇的畫(huà)刷類(lèi)型 COLORREF m_crPenColor 標(biāo)志“筆顏色”列表框中所選擇的畫(huà)筆顏色 COLORREF m_crBrushColor 標(biāo)志“刷子顏色”列表框中所選擇的畫(huà)刷
22、顏色,在CMy14_8Dlg.cpp的OnInitDialog()函數(shù)中加入代碼如下: m_crPenColor = RGB(255,0,0);/默認(rèn)筆顏色 m_crBrushColor = RGB(255,0,0);/默認(rèn)刷顏色 m_nPenStyle = PS_SOLID;/默認(rèn)筆樣式 m_nBrushStyle = 0;/默認(rèn)刷樣式為Solid m_ComboPenColor.SetCurSel(0);/設(shè)置Pen組合框的當(dāng)前選項(xiàng) m_ComboBrushColor.SetCurSel(0);/設(shè)置Brush組合框的當(dāng)前選項(xiàng) m_ListShape.SetCurSel(0);/設(shè)置默認(rèn)的
23、Shape /設(shè)置單選按鈕按鈕的初始狀態(tài) CheckRadioButton(IDC_RADIO_SOLID,IDC_RADIO_DASHDOT,IDC_RADIO_SOLID); CheckRadioButton(IDC_RADIO_SOLIDBRUSH,IDC_RADIO_BDIAGONAL, IDC_RADIO_SOLIDBRUSH); 在這里設(shè)置了各變量的初始值。默認(rèn)筆和刷的顏色為紅色,筆的線形為實(shí)線,畫(huà)刷填充類(lèi)型為實(shí)填充。,void CMy14_8Dlg:OnRadioSolid() m_nPenStyle = PS_SOLID;/筆樣式為實(shí)線 void CMy14_8Dlg:OnRa
24、dioDash() m_nPenStyle = PS_DASH; /筆樣式為劃線 void CMy14_8Dlg:OnRadioDashdot() m_nPenStyle = PS_DASHDOT;/筆樣式為點(diǎn)劃線 void CMy14_8Dlg:OnRadioDot() m_nPenStyle = PS_DOT;/筆樣式為點(diǎn)線 void CMy14_8Dlg:OnRadioFdiagonal() m_nBrushStyle = HS_FDIAGONAL; /填充模式為向上45度線 void CMy14_8Dlg:OnRadioBdiagonal() m_nBrushStyle = HS_BD
25、IAGONAL; /填充模式為向下45度線 void CMy14_8Dlg:OnRadioCross() m_nBrushStyle = HS_CROSS;/填充模式為交叉線 void CMy14_8Dlg:OnRadioSolidbrush() m_nBrushStyle = 0;/填充樣式為實(shí)填充,為列表框添加消息處理函數(shù),設(shè)置畫(huà)刷顏色 void CMy14_8Dlg:OnSelendokComboBrushcolor() int i; i=m_ComboBrushColor.GetCurSel();/畫(huà)刷顏色組合框的當(dāng)前選項(xiàng)標(biāo)號(hào) if(i=0) m_crBrushColor = RGB(255,0,0);/第1項(xiàng)為紅色 else if(i=1) m_crBrushColor = RGB(0,255,0);/第2項(xiàng)為綠色 else if(i=2) m_crBrushColor = RGB(0,0,255);/第3項(xiàng)為藍(lán)色 else if(i=3) m_crBrushColor = RGB(255,255,0);/第4項(xiàng)為黃色 else if(i=4) m_
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024福建榕發(fā)置地有限公司選聘2人筆試參考題庫(kù)附帶答案詳解
- 2025年上半年安徽馬鞍山花山區(qū)事業(yè)單位統(tǒng)一招聘工作人員39人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽馬鞍山含山縣融媒體中心招聘3人主持人(出鏡記者)易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025興安盟烏蘭浩特市司法局面向社會(huì)招聘實(shí)習(xí)生25人筆試參考題庫(kù)附帶答案詳解
- 2025年上半年安徽蚌埠固鎮(zhèn)縣新馬橋鎮(zhèn)選聘村級(jí)后備干部10人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2023年硫酸黏菌素類(lèi)產(chǎn)品資金申請(qǐng)報(bào)告
- 2025年上半年安徽省亳州市直事業(yè)單位招考易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽安慶市宿松縣事業(yè)單位招聘工作人員91人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年安慶文旅集團(tuán)面向全國(guó)公開(kāi)招聘人才易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年寧波市市域鐵路投資發(fā)展限公司社會(huì)招聘易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- GB/T 4292-2017氟化鋁
- GB/T 41-20161型六角螺母C級(jí)
- GB/T 3811-2008起重機(jī)設(shè)計(jì)規(guī)范
- CB/T 615-1995船底吸入格柵
- 11471勞動(dòng)爭(zhēng)議處理(第10章)
- 2022年河南省對(duì)口升學(xué)計(jì)算機(jī)類(lèi)專(zhuān)業(yè)課考試真題卷
- 人工智能賦能教育教學(xué)變革的研究
- 經(jīng)營(yíng)性公墓建設(shè)標(biāo)準(zhǔn)
- 患教-頸動(dòng)脈斑塊課件
- 審計(jì)部組織架構(gòu)及崗位設(shè)置
- 流行性乙型腦炎PPT課件
評(píng)論
0/150
提交評(píng)論