版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
會計學(xué)1按鈕控件與列表框控件第2頁/共38頁第1頁/共38頁第3頁/共38頁第2頁/共38頁MFC調(diào)用方法DrawItem()自動在一個按鈕的用戶區(qū)上畫上位圖,即用戶可以自定義按鈕。有時必須調(diào)整位圖的尺寸大小,可以通過SizeToContent()方法進行調(diào)整將對話框按鈕CBitmapButton()對象聯(lián)系起來CBitmapButton類定義的兩個初始化方法以增強按鈕的功能LoadBitmaps()AutoLoad()為CBitmapButton對象附上位圖,最多可有4個位圖,這些位圖從用于程序的資源文件中讀取第4頁/共38頁第3頁/共38頁列表框類的結(jié)構(gòu)和方法MFC中CListBox類的層次結(jié)構(gòu)
列表框經(jīng)常用在對話框里,如用列表框選擇文件名、目錄等。列表框有一個預(yù)定義的鍵盤接口,用戶可以用鍵盤上的箭頭和PageUp或PageDown鍵在列表框中進行數(shù)據(jù)的選擇,或通過適當(dāng)?shù)臉邮皆O(shè)置,允許與Shift或Ctrl鍵組合使用。列表框常應(yīng)用于從眾多數(shù)據(jù)中選某一項第5頁/共38頁第4頁/共38頁第6頁/共38頁第5頁/共38頁消息映像項使用下面的基本格式:ON_Message(ControlID,ClassMethod)所有者類聲明中的方法原型afx_msgvoidClassMethod();發(fā)送消息的列表框控件的子窗口標識處理消息的父類方法的名字第7頁/共38頁第6頁/共38頁(1)通用方法
通用方法用來獲得和設(shè)置列表框數(shù)據(jù)的值和屬性,所有的CListBox列表框都有這些方法,包括單選列表框、多選列表框和自繪列表框等。第8頁/共38頁第7頁/共38頁(2)單項選擇特定方法列表框的默認模式是單選項模式;所有的通用方法均適用于單選項列表框。只有兩個類方法專門處理單選項列表框GetCurSel()SetCurSel()獲得當(dāng)前選擇列表框項的下標(基于0)選擇列表框字符串第9頁/共38頁第8頁/共38頁
方法說明 GetAnchorIndex() 獲得多項選擇列表框中當(dāng)前定位項的下標
GetCaretIndex() 獲得多項選擇列表框中具有光標矩形的項的下標
GetSelCount() 獲得多項選擇列表框中當(dāng)前所選的項的數(shù)目
GetSelItems() 將所有當(dāng)前被選列表框項下標放入一整型數(shù)組緩沖區(qū)SelItemRange() 切換多選擇列表框項范圍的選擇狀態(tài)
SetAnchorIndex() 在多項選擇列表框中擴充選擇設(shè)置開始(定位)項
SetCaretIndex() 在多項選擇列表框中指定下標項設(shè)置光標矩形
SetSel() 在多項選擇列表框中切換項目的選擇狀態(tài)(3)多項選擇特定方法多選項列表框擴展了標準單項選擇列表框的能力,可以解決在一個列表框中選擇多項帶來的復(fù)雜性特定多項選擇列表框的CListBox類方法第10頁/共38頁第9頁/共38頁(4)字符串指定的方法
方法說明 AddString() 在列表框中加入一個字符串 DeleteString() 從列表框中刪除一個字符串 Dir() 從當(dāng)前目錄加文件名放入列表框 FindString() 在列表框中搜索一字符串 FindStringExact()在列表框中搜索第一個與指定搜索字符串匹配的字符串InsertString() 在列表框指定下標處插入一字符串
ResetContent() 清除列表框中的所有項
SelectString() 在單選列表框中搜索并選擇一字符串CListBox指定列表框中字符串的方法第11頁/共38頁第10頁/共38頁(5)虛擬方法CLstBox類還聲明了幾個虛擬方法,你可以從CListBox類中派生一些類替換到你的類中。
方法說明
CharToItem()
可以替換此方法來為自繪列表框(沒有字符串)處理WM-CHARCompareItem() 由MFC調(diào)用以得到排序的自繪列表框中的新項的位置 DeleteItem()
當(dāng)用戶從自繪列表框中刪除一項時MFC調(diào)用此方法 DrawItem()
當(dāng)確定自繪列表框項必須重繪時MFC調(diào)用此方法 MeasureItem()
當(dāng)一自繪列表框被創(chuàng)建時MFC調(diào)用此方法來決定列表框的維數(shù)VKeyToItem()
用戶可替換此方法,來處理具有LBS_WANTKEYBOARDINPUT樣式的列表框的WM_KEYDOWN能被替換的CListBox類的虛擬方法第12頁/共38頁第11頁/共38頁創(chuàng)建和初始化CListBox對象(1)用C++關(guān)鍵字new和構(gòu)造函數(shù)CListBox::CListBox()
為CListBox對象分配一個實例。例如,下面代碼分配一個CListBox對象并返回指向該對象的指針:
ClistBox*pMyListBox=newCListBox;
指針pMyListBox用CListBox::Create()方法進行初始化。該方法聲明如下:
BOOLCreate(
DWORDdwStyle, //dwStyle是列表框控件的窗口樣式
constRecy&rect,//rect是一個矩形,它指明控件的大小和位置
CWnd*pParentWnd,//pParentWnd是指向控件所有者的指針
UINTnID //nID是父窗口用來與列表框通信的控件標識
);(2)初始化CListBox對象并賦與它一個Windows列表框,通過方法CListBox::Create()設(shè)置列表框的參數(shù)和樣式。第13頁/共38頁第12頁/共38頁14.2按鈕類及列表框類編程實例
第14頁/共38頁第13頁/共38頁1.應(yīng)用程序的界面設(shè)計單選按鈕組的ID都為IDC_STATIC,說明不同的控件可以有相同的ID。因為單選按鈕組只是用來顯示一組內(nèi)容的屬性,無具體操作#defineIDC_Age1_RADIO1015#defineIDC_Age2_RADIO1016#defineIDC_Age3_RADIO1017#defineIDC_Boy_RADIO1023#defineIDC_Girl_RADIO1024同一組單選按鈕必須一個接一個地放進對話框中中間不能中斷對于成組的單選按鈕,只在每組的第一個按鈕的屬性窗口中選中Group第15頁/共38頁第14頁/共38頁2.應(yīng)用程序的代碼編程部分第16頁/共38頁第15頁/共38頁
方法的實現(xiàn)第17頁/共38頁第16頁/共38頁為復(fù)選框IDC_TIME_CHECK添加代碼voidCSELECTBOXDlg::OnTimeCheck(){//在此處加入控件通知句柄代碼
UpdateData(TRUE);if(m_TimeCheck==TRUE){CTimetNow;tNow=CTime::GetCurrentTime();CStringsNow=tNow.Format("%I:%M:%S");m_TimeEdit.SetSel(0,-1);m_TimeEdit.ReplaceSel(sNow);}else{m_TimeEdit.SetSel(0,-1);m_TimeEdit.ReplaceSel("");}UpdateData(FALSE);}其中函數(shù)Format的參數(shù)%I是時間的小時表示法(01到12),%m是分的表示法(00到59),%S是秒的表示法(00到59)第18頁/共38頁第17頁/共38頁給Enable按鈕添加代碼OnEnableButton()方法的實現(xiàn)代碼如下:voidCSELECTBOXDlg::OnEnableButton(){ //在此處加入控件通知句柄代碼
//添加代碼開始
GetDlgItem(IDC_DATE_CHECK)->EnableWindow(TRUE); GetDlgItem(IDC_TIME_CHECK)->EnableWindow(TRUE); m_DateEdit.EnableWindow(TRUE); m_TimeEdit.EnableWindow(TRUE); //添加代碼結(jié)束}第19頁/共38頁第18頁/共38頁為Disable按鈕連接代碼OnDisableButton()方法的實現(xiàn)代碼如下:voidCSELECTBOXDlg::OnDisableButton(){ //在此處加入控件通知句柄代碼
//添加代碼開始
GetDlgItem(IDC_DATE_CHECK)->EnableWindow(FALSE); GetDlgItem(IDC_TIME_CHECK)->EnableWindow(FALSE); m_DateEdit.EnableWindow(FALSE); m_TimeEdit.EnableWindow(FALSE); //添加代碼結(jié)束}第20頁/共38頁第19頁/共38頁為ShowAgain按鈕添加代碼在函數(shù)OnShowButton()方法中添加實現(xiàn)代碼如下:voidCSELECTBOXDlg::OnShowButton(){ //在此處加入控件通知句柄代碼
//添加代碼開始
GetDlgItem(IDC_DATE_CHECK)->EnableWindow(SW_SHOW); 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); //添加代碼結(jié)束}第21頁/共38頁第20頁/共38頁為HidetheClockSetting按鈕添加實現(xiàn)代碼函數(shù)OnHideButton()方法中輸入以下實現(xiàn)代碼:voidCSELECTBOXDlg::OnHideButton(){ //在此處加入控件通知句柄代碼
//添加代碼開始
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ù),它表示是否顯示對象窗口,參數(shù)SW_SHOW表示顯示,SW_HIDE表示隱藏。第22頁/共38頁第21頁/共38頁給Show_the_Sex_and_Age按鈕添加代碼OnShowSexAgeButton()方法的實現(xiàn)代碼如下:voidCSELECTBOXDlg::OnShowSexAgeBUTTON(){//在此處加入控件通知句柄代碼
charsEdit[50];intiSexRADIO;intiAgeRADIO;iSexRADIO=GetCheckedRadioButton(IDC_Boy_RADIO,IDC_Girl_RADIO);if(iSexRADIO==IDC_Boy_RADIO)strcpy(sEdit,"Theboy’sageis");if(iSexRADIO==IDC_Girl_RADIO)strcpy(sEdit,"Thegirl’sageis");iAgeRADIO=GetCheckedRadioButton(IDC_Age1_RADIO,IDC_Age3_RADIO);if(iAgeRADIO==IDC_Age1_RADIO)strcat(sEdit,"greatthan20");if(iAgeRADIO==IDC_Age2_RADIO)strcat(sEdit,"between15and20");if(iAgeRADIO==IDC_Age3_RADIO)strcat(sEdit,"lessthan15");m_ResultEdit.SetSel(0,-1);m_ResultEdit.ReplaceSel(sEdit);}第23頁/共38頁第22頁/共38頁為Show_Combo按鈕添加代碼OnShowComboButton()方法的實現(xiàn)的代碼如下:voidCSELECTBOXDlg::OnShowComboButton(){UpdateData(TRUE);charsCourseEdit[30];charsRecordEdit[15];intiCourseRadio;iCourseRadio=GetCheckedRadioButton (IDC_ENGLISH_RADIO,IDC_NATURE_RADIO);if(iCourseRadio==IDC_ENGLISH_RADIO) strcpy(sCourseEdit,"Englishrecordis");if(iCourseRadio==IDC_COMPUTER_RADIO) strcpy(sCourseEdit,"Computerrecordis");if(iCourseRadio==IDC_NATURE_RADIO) strcpy(sCourseEdit,"Naturalrecordis");m_Record.GetWindowText(sRecordEdit,15);strcat(sCourseEdit,"");strcat(sCourseEdit,sRecordEdit);m_ComboEdit=_T(sCourseEdit);UpdateData(FALSE);}第24頁/共38頁第23頁/共38頁給OnExitButton()方法添加代碼OnExitButton()的實現(xiàn)代碼如下:voidCSELECTBOXDlg::OnExitButton(){ //在此處加入控件通知句柄代碼
//添加代碼開始
OnOK(); //添加代碼結(jié)束
}第25頁/共38頁第24頁/共38頁初始化單選按鈕BOOLCSELECTBOXDlg::OnInitDialog(){CDialog::OnInitDialog();//IDM_ABOUTBOXmustbeinthesystemcommandrange.ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX<0xF000);CMenu*pSysMenu=GetSystemMenu(FALSE);if(pSysMenu!=NULL){CStringstrAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if(!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);}}
第26頁/共38頁第25頁/共38頁SetIcon(m_hIcon,TRUE); //SetbigiconSetIcon(m_hIcon,FALSE); //Setsmallicon//在此加入其他初始化代碼(Addextrainitializationhere)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_Record.AddString("95");m_Record.SelectString(-1,"95");UpdateData(FALSE);returnTRUE;//returnTRUEunlessyousetthefocustoacontrol}第27頁/共38頁第26頁/共38頁如圖創(chuàng)建應(yīng)用程序,在“形狀”列表框中選擇要繪制圖形,在“筆顏色”下拉列表框選擇畫筆的顏色,在“刷子顏色”下拉列表框中選擇畫刷的顏色。在“線型”組合框選擇畫筆的線型,在“填充類型”中選擇畫刷填充類型。單擊“繪圖”按鈕按照前面的選項繪制圖形,單擊“退出”按鈕退出程序。第28頁/共38頁第27頁/共38頁靜態(tài)文本IDC_STATIC 形狀列表框IDC_LIST_SHAPE靜態(tài)文本IDC_STATIC 刷子顏色下拉列表框IDC_COMBO_BRUSHCOLOR靜態(tài)文本IDC_STATIC 筆顏色下拉列表框IDC_COMBO_PENCOLOR“筆顏色”下拉列表框--〉單擊鼠標右鍵--〉Properties--〉Data選項卡--〉輸入顏色(輸完一行后,按下Ctrl+Enter鍵)。同理處理“畫刷顏色”下拉列表框第29頁/共38頁第28頁/共38頁nameIDCaption組合框 IDC_STATIC 線型 單選按鈕IDC_RADIO_SOLIDSolid 單選按鈕IDC_RADIO_DASHDash 單選按鈕IDC_RADIO_DOTDot 單選按鈕IDC_RADIO_DASHDOTDashDotnameIDCaption組合框 IDC_STATIC 填充類型 單選按鈕IDC_RADIO_SOLIDBRUSHSolidBrush單選按鈕IDC_RADIO_CROSS Cross 單選按鈕IDC_RADIO_PDIAGONALPDiagonal 單選按鈕IDC_RADIO_BDIAGONALBDiagonalSolid〉鼠標右鍵-->Properties-->選中Group選項。注意創(chuàng)建單選按鈕時要按照圖中從上到下的順序,這樣保證了單選按鈕的ID值是連續(xù)的,才能保證兩組單選按鈕的互斥性。下壓式按鈕IDC_BTN_DRAW 繪制下壓式按鈕IDOK 退出第30頁/共38頁第29頁/共38頁
為對話框中控件連接變量ControlIds 變量類型 變量名稱 IDC_LIST_SHAPE CListBox m_ListShape IDC_COMBO_PENCOLOR CComboBox m_ComboPenColor IDC_COMBO_BRUSHCOLOR CComboBox m_ComboBrushColor在文件14_8Dlg中的消息處理函數(shù)OnInitDialog()中加入代碼如下:
m_ListShape.AddString("Line"); m_ListShape.AddString("Circle"); m_ListShape.AddString("Rectangle"); m_ListShape.AddString("RoundRectangle");調(diào)用列表框類成員函數(shù)AddString()給列表框加入選項,完成列表框的初始化第31頁/共38頁第30頁/共38頁在Workspace窗口中,選擇ClassView卡,在類CMy14_8Dlg上單擊鼠標右鍵,選擇Addmembervariable菜單項,加入public型變量如下所示:變量類型變量名稱 說明 int m_nPenStyle 標志由“線型”組合框中所選擇的畫筆的類型 int m_nBrushStyle標志由“填充類型”組合框中所選擇的畫刷類型COLORREFm_crPenColor標志“筆顏色”列表框中所選擇的畫筆顏色 COLORREFm_crBrushColor標志“刷子顏色”列表框中所選擇的畫刷顏色 第32頁/共38頁第31頁/共38頁在CMy14_8Dlg.cpp的OnInitDialog()函數(shù)中加入代碼如下:m_crPenColor=RGB(255,0,0); //默認筆顏色m_crBrushColor=RGB(255,0,0); //默認刷顏色m_nPenStyle=PS_SOLID; //默認筆樣式m_nBrushStyle=0; //默認刷樣式為Solidm_ComboPenColor.SetCurSel(0); //設(shè)置Pen組合框的當(dāng)前選項m_ComboBrushColor.SetCurSel(0); //設(shè)置Brush組合框的當(dāng)前選項m_ListShape.SetCurSel(0); //設(shè)置默認的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è)置了各變量的初始值。默認筆和刷的顏色為紅色,筆的線形為實線,畫刷填充類型為實填充。第33頁/共38頁第32頁/共38頁voidCMy14_8Dlg::OnRadioSolid(){m_nPenStyle=PS_SOLID;} //筆樣式為實線voidCMy14_8Dlg::OnRadioDash(){m_nPenStyle=PS_DASH;} //筆樣式為劃線voidCMy14_8Dlg::OnRadioDashdot(){m_nPenStyle=PS_DASHDOT;} //筆樣式為點劃線voidCMy14_8Dlg::OnRadioDot(){m_nPenStyle=PS_DOT;} //筆樣式為點線voidCMy14_8Dlg::OnRadioFdiagonal(){m_nBrushStyle=HS_FDIAGONAL;}//填充模式為向上45度線voidCMy14_8Dlg::OnRadioBdiagonal(){m_nBrushStyle=HS_BDIAGONAL;}//填充模式為向下45度線voidCMy14_8Dlg::OnRadioCross(){m_nBrushStyle=HS_CROSS;} //填充模式為交叉線voidCMy14_8Dlg::OnRadioSolidbrush(){m_nBrushStyle=0;} //填充樣式為實填充第34頁/共38頁第33頁/共38頁為列表框添加消息處理函數(shù),設(shè)置畫刷顏色voidCMy14_8Dlg::OnSelendokComboBrushcolor(){inti;i=m_ComboBrushColor.GetCurSel();//畫刷顏色組合框的當(dāng)前選項標號
if(i==0){m_crBrushColor=RGB(255,0,0);} //第1項為紅色
elseif(i==1){m_crBrushColor=RGB(0,255,0);} //第2項為綠色
elseif(i==2){m_crBrushColor=RGB(0,0,255);} //第3項為藍色
elseif(i==3){m_crBrushColor=RGB(255,255,0);} //第4項為黃色
elseif(i==4){m_crBrushColor=RGB(0,255,255);} //第5項為天藍色}
首先調(diào)用函數(shù)GetCurSel()得到當(dāng)前選項在下拉列表框中的位置,然后根據(jù)此位置設(shè)置顏色變量。第35頁/共38頁第34頁/共38頁為列表框添加消息處理函數(shù),設(shè)置畫刷顏色voidCMy14_8Dlg::OnSelendokComboPencolor(){inti;i=m_ComboPenColor.GetCurSel();//得到筆顏色組合框的當(dāng)前選項
if(i==0){m_crPenColor=RGB(255,0,0);} //第1為紅色
elseif(i==1){m_crPenColor=RGB(0,255,0);} //第2為綠色
elseif(i==2){m_crPenColor=RGB(0,0,255);} //第3為藍色
elseif(i==3){m_crPe
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 保證書范文個性化撰寫
- 中小企業(yè)借款合同英文版
- 消防安全責(zé)任合同簽訂與監(jiān)管建議
- 月嫂服務(wù)合同常見問題解答
- 專業(yè)服務(wù)授權(quán)合同
- 服務(wù)招聘合同協(xié)議書范本
- 精湛換熱站運維服務(wù)合同支持
- 營銷方案3篇資料
- 童裝購銷合同
- 私人訂制家政服務(wù)
- 工程管理基礎(chǔ)知識單選題100道及答案
- 我用的短線選股法(此法選股100%成功)
- 2024年人工智能(AI)訓(xùn)練師職業(yè)技能鑒定考試題庫(濃縮500題)
- 三級公立醫(yī)院績效考核微創(chuàng)手術(shù)目錄(2022版)
- GB/T 15597.1-2024塑料聚甲基丙烯酸甲酯(PMMA)模塑和擠出材料第1部分:命名系統(tǒng)和分類基礎(chǔ)
- 2024版招投標合同范本
- 漢字與對外漢語教學(xué)智慧樹知到期末考試答案章節(jié)答案2024年西北師范大學(xué)
- 貴州省黔南州2023-2024學(xué)年度上學(xué)期期末質(zhì)量監(jiān)測八年級物理試卷
- 籃球智慧樹知到期末考試答案章節(jié)答案2024年溫州理工學(xué)院
- 統(tǒng)計與數(shù)據(jù)分析基礎(chǔ)-形成性考核三(項目6-項目8階段性測試權(quán)重25%)-國開-參考資料
- 中學(xué)體育節(jié)競賽規(guī)程活動方案
評論
0/150
提交評論