




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第14章 按鈕控件與列表框控件,Cbutton及CBitmapButton類在MFC窗口類的層次結(jié)構(gòu)中的位置,14.1 按鈕類與列表框類簡(jiǎn)介,MFC調(diào)用方法DrawItem()自動(dòng)在一個(gè)按鈕的用戶區(qū)上畫上位圖,即用戶可以自定義按鈕。,有時(shí)必須調(diào)整位圖的尺寸大小,可以通過SizeToContent()方法進(jìn)行調(diào)整,列表框類的結(jié)構(gòu)和方法,MFC中CListBox類的層次結(jié)構(gòu),列表框經(jīng)常用在對(duì)話框里,如用列表框選擇文件名、目錄等。列表框有一個(gè)預(yù)定義的鍵盤接口,用戶可以用鍵盤上的箭頭和PageUp或PageDown鍵在列表框中進(jìn)行數(shù)據(jù)的選擇,或通過適當(dāng)?shù)臉邮皆O(shè)置,允許與Shift或Ctrl鍵組合使用。
2、,列表框常應(yīng)用于從眾多數(shù)據(jù)中選某一項(xiàng),(1) 通用方法,通用方法用來獲得和設(shè)置列表框數(shù)據(jù)的值和屬性,所有的CListBox列表框都有這些方法,包括單選列表框、多選列表框和自繪列表框等。,(2) 單項(xiàng)選擇特定方法,列表框的默認(rèn)模式是單選項(xiàng)模式;所有的通用方法均適用于單選項(xiàng)列表框。,方法 說明 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è)置開始(定位)項(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)帶來的復(fù)雜性,特定多項(xiàng)選擇列表 框的CListBox類方法,(4) 字符串指定的方法,方法 說明 AddString() 在列表框中加入一個(gè)字符串 DeleteString() 從列表框中刪除一個(gè)字符串 Dir() 從當(dāng)前目錄加文件名放入列表
4、框 FindString() 在列表框中搜索一字符串 FindStringExact() 在列表框中搜索第一個(gè)與指定搜索字符串匹配的字符串 InsertString() 在列表框指定下標(biāo)處插入一字符串 ResetContent() 清除列表框中的所有項(xiàng) SelectString() 在單選列表框中搜索并選擇一字符串,CListBox指定列表 框中字符串的方法,(5) 虛擬方法,CLstBox類還聲明了幾個(gè)虛擬方法,你可以從CListBox類中派生一些類替換到你的類中。,創(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() / 在此處加入控件通知句柄代碼 /添加代碼開始 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() / 在此處加入控件通知句柄代碼 /添加代碼開始 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() / 在此處加入控件通知句柄代碼 /添加代碼開始 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、知句柄代碼 /添加代碼開始 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()是基類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() / 在此處加入控件通知句柄代碼 /添加代碼開始 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)用程序,在“形狀”列表框中選擇要繪制圖形,在“筆顏色”下拉列表框選擇畫筆的顏色,在“刷子顏色”下拉列表框中選擇畫刷的顏色。在“線型”組合框選擇畫筆的線型,在“填充類型”中選擇畫刷填充類型。單擊“繪圖” 按鈕按照前面的選項(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鍵)。 同理處理“畫刷顏色”下拉列表框,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 填充類型 單選按鈕 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變量類型變量名稱 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、表框類成員函數(shù)AddString()給列表框加入選項(xiàng),完成列表框的初始化,在Workspace窗口中,選擇ClassView卡,在類CMy14_8Dlg上單擊鼠標(biāo)右鍵,選擇Add member variable菜單項(xiàng),加入public型變量如下所示: 變量類型 變量名稱 說明 int m_nPenStyle 標(biāo)志由“線型”組合框中所選擇的畫筆的類型 int m_nBrushStyle 標(biāo)志由“填充類型”組合框中所選擇的畫刷類型 COLORREF m_crPenColor 標(biāo)志“筆顏色”列表框中所選擇的畫筆顏色 COLORREF m_crBrushColor 標(biāo)志“刷子顏色”列表框中所選擇的畫刷
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í)線,畫刷填充類型為實(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è)置畫刷顏色 void CMy14_8Dlg:OnSelendokComboBrushcolor() int i; i=m_ComboBrushColor.GetCurSel();/畫刷顏色組合框的當(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. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 西游記故事解讀傳統(tǒng)文化的智慧
- 2025年電力控制設(shè)備項(xiàng)目合作計(jì)劃書
- 幼兒園大班語言活動(dòng)課感悟
- 創(chuàng)新創(chuàng)業(yè)項(xiàng)目的可行性研究
- 網(wǎng)絡(luò)通信設(shè)備及安裝維護(hù)合同書
- 市場(chǎng)營銷策略在快消品行業(yè)的運(yùn)用測(cè)試卷
- 工程項(xiàng)目經(jīng)理部承包合同
- 建筑裝修工程進(jìn)度款支付條款合同
- 銀團(tuán)貸款業(yè)務(wù)培訓(xùn)
- 家居行業(yè)智能家居產(chǎn)品設(shè)計(jì)及實(shí)施方案
- 《中國建筑特色》課件
- 《大學(xué)物理學(xué)》高等院校專業(yè)教材
- 《社會(huì)應(yīng)急力量建設(shè)基礎(chǔ)規(guī)范 第4部分:水上搜救》(YJT 1.4-2022)知識(shí)培訓(xùn)
- 2024年浙江省杭州建德市招聘部分單位輔助性用工18人歷年高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 涼山州小學(xué)數(shù)學(xué)教師業(yè)務(wù)素質(zhì)考試試題(真題+訓(xùn)練)
- GB/T 44669-2024殘疾人服務(wù)機(jī)構(gòu)服務(wù)規(guī)范
- 口腔科護(hù)士試題及答案
- 中國移動(dòng)安徽公司招聘筆試真題2023
- 2024年中考語文二模試題分類匯編:病句修改(北京專用)(解析版)
- 2024年安徽省宣城市皖東南四校尖子生中考數(shù)學(xué)對(duì)抗賽試卷
- 麥肯錫-化工企業(yè)卓越運(yùn)營材料Chemical ops summary-v520150301
評(píng)論
0/150
提交評(píng)論