標準控件的編程_第1頁
標準控件的編程_第2頁
標準控件的編程_第3頁
標準控件的編程_第4頁
標準控件的編程_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第9章 Windows 標準控件在可視化編程中的應用1 控件是Windows 圖形用戶界面的主要組成部分之一,用戶通過操作控件對象完成與應用程序之間的交互。控件的使用集中體現(xiàn)了Windows 系統(tǒng)面向?qū)ο蟮奶攸c 29.1概述控件工具欄控件接受的消息主要有單擊、雙擊和字符輸入等控件的選擇靜態(tài)文本組框復選框組合框水平滾動條旋轉(zhuǎn)按鈕滑動條列表視圖標簽復合編輯月歷用戶定制工具靜態(tài)圖片編輯框按鈕單選框列表框垂直滾動條進展條熱鍵樹形視圖動畫日期選擇IP地址組合框的擴展39.2 按鈕控件及其應用 按鈕控件 普通按鈕(下壓式)圓按鈕(單選)復選框按鈕組框按鈕49.2.1 按鈕控件的創(chuàng)建過程 CButton類的

2、成員函數(shù)Create負責創(chuàng)建按鈕控件,該函數(shù)的聲明為:BOOL Create ( LPCTSTR lpszCaption, /指定了按鈕顯示的正文 DWORD dwStyle, /按鈕的風格 const RECT& rect, /按鈕的位置和大小 CWnd* pParentWnd, /指向父窗口, UINT nID/按鈕的ID )5按鈕控件消息:ON_BN_CLICKEDON_BN_DBLCLICKEDON_COMMAND兩個類似按鈕是最常見的控件之一復選框按鈕單選按鈕下壓式按鈕組框按鈕常用于只有兩種完全相反狀態(tài)的情況下適用于同一組屬性相同的數(shù)據(jù)中選一個數(shù)據(jù)適用于消息的發(fā)送沒有太多的操作只是在

3、窗口中劃分區(qū)域范圍6GetCheck( )SetCheck( )GetBitmap()SetBitmap()GetButtonStyle()SetButtonStyle()GetCursor()SetCursor()GetIcon()SetIcon()GetState()SetState()CButton類的成員函數(shù)在知道按鈕ID的前提下,還可使用與按鈕有關的CWnd成員函數(shù)來設置或查詢按鈕狀態(tài) CheckDlgButtonCheckRadioButtonGetCheckedRadioButtonIs DlgButtonCheckedGetWindowTexGetWindowTextLengt

4、hSetWindowText79.2.2 按鈕控件示例 8主要步驟:創(chuàng)建基于對話框項目設置按鈕的屬性 Group屬性9 控件的選取 (多個)在對話框內(nèi)按住鼠標左鍵不放,拖出一個大的虛框,釋放鼠標,則被該虛框所包圍的控件都將被選取。先按住Shift鍵不放,用鼠標選取控件,直到所需要的多個控件選取之后再釋放Shift鍵。若在選取時,對已選取的控件再選取一下,則該控件取消選取。一旦單個控件被選取后,其四周由選擇框包圍著,選擇框上還有幾個(通常是八個)藍色實心小方塊,拖動它可改變控件的大小,如圖。多個控件被選取后,其中只有一個控件的選擇框有幾個藍色實心小方塊,這個控件稱為主要控件,而其他控件的選擇框的

5、小方塊是空心的。如圖。(b)(a)10 設定控件的Tab鍵次序一是改變用Tab鍵選擇控件的次序,二是當兩個或兩個以上的控件構(gòu)成一組時,需要它們的Tab鍵次序連續(xù)。對話框內(nèi)控件的Tab鍵次序設定步驟如下:首先,選擇“Layout”“Tab Order”命令,或按Ctrl+D,此時每個控件的左上方都有一個數(shù)字,表明了當前Tab鍵次序,如圖。其次,按新的次序依次用鼠標單擊各個控件,新的Tab鍵即可生成。最后,單擊對話框或按Enter鍵結(jié)束Tab Order 方式。11對話框內(nèi)的控件的布局123. 添加成員變量并添加消息響應函數(shù)134. 添加數(shù)據(jù)成員14void CMy9_1Dlg:OnButton1

6、() m_btn1.SetWindowText(你已按下了按鈕!); void CMy9_1Dlg:OnButton2() m_btn2.SetWindowText(按鈕已被按下!); void CMy9_1Dlg:OnRadio1() sex=1; void CMy9_1Dlg:OnRadio2() sex=2; 15作業(yè)1、按鈕控件的類名是什么?2、按鈕控件的特點是什么?3、按鈕控件可分為幾類?發(fā)到: 169.3 滾動條控件 滾動條是一個交互式的、高度可視化的控件它包括一個滑塊、滾動條的兩端的按鈕等。滾動條控件與屬于窗口的滾動條是不一樣的處于窗口的滾動條是由該窗口創(chuàng)建、管理和釋放的滾動條控

7、件是由用戶創(chuàng)建、管理和釋放的179.3.1 滾動條類的結(jié)構(gòu)及其方法 滾動條可以通過通知代碼來創(chuàng)建,也可以用對話框資源模板來創(chuàng)建18常用滾動條動作標識及其說明SB_TOP / SB_BOTTOM :滾動到最頂 / 底端SB_LINEUP / SB_LINEDOWN:向上 / 下滾動一行SB_PAGEUP / SB_PAGEDOWN :向上 / 下滾動一頁SB_LEFT / SB_RIGHT:滾動到左 / 右邊SB_LINELEFT / SB_LINERIGHT:向左 / 右滾動一行SB_PAGELEFT/SB_PAGERIGHT :向左 / 右滾動一頁SB_THUMBTRACK:滾動框被拖動19

8、在設置滾動條控件時,要通過如下方法設置其范圍CScrollBar:SetScrollRange()例如,設置滾動范圍為-100到100的垂直滾動條pMyScroll.SetScrollRange(-100,100);通過SetScrollPos()設置滾動塊當前位置例如,滾動快的位置在-100到100的中間,即為0的位置pMyScroller.SetScrollPos(0);209.3.3滾動條類編程實例 標題為Application of ScrollBar滾動條的滾動范圍設為0到20單擊滾動塊與箭頭之間的區(qū)域。滾動塊上移或下移三格,編輯框中的數(shù)字加3或減3單擊向上或向下的箭頭,滾動塊向上或

9、向下移動一格,編輯框中的數(shù)字加1或減1按住滾動塊上下拖動。編輯框中的數(shù)字隨著隨之變化當前值為10單擊Up按鈕,滾動塊移到最上邊,編輯框的數(shù)字變?yōu)?單擊Down按鈕,滾動塊移到最下邊,編輯框的數(shù)字變?yōu)?0單擊Reset按鈕,滑塊移到中間,編輯框的數(shù)字變?yōu)?0單擊Exit按鈕,退出應用程序21(1) 應用程序的可視化編程部分22(2) 應用程序的代碼編程部分(a) 給滾動條連接變量ID變量名類別 類型IDC_SCROLLBARm_ScrollbarControlCscrollbarIDC_EDITlm_Edit1Valueint23BOOL CMy9_2Dlg:OnInitDialog() CDi

10、alog:OnInitDialog(); / TODO: Add extra initialization herem_Scrollbar.SetScrollRange(0,20);m_Scrollbar.SetScrollPos(10);m_Edit=m_Scrollbar.GetScrollPos();UpdateData(FALSE);return TRUE; (b) 初始化滾動條24(3) 給滾動條消息添加代碼 void CMy9_2Dlg:OnVScroll() / TODO: Add your message handler code hereint iNowPos;switch(

11、nSBCode) if(pScrollBar=&m_Scrollbar) case SB_THUMBTRACK:/拖動滑塊m_Scrollbar.SetScrollPos(nPos);m_Edit=m_Scrollbar.GetScrollPos(); UpdateData(false);25case SB_LINEDOWN:/單擊滾動條向下的箭頭iNowPos=m_Scrollbar.GetScrollPos();iNowPos=iNowPos+1;if(iNowPos20)iNowPos=20;m_Scrollbar.SetScrollPos(iNowPos);m_Edit=m_Scrol

12、lbar.GetScrollPos(); UpdateData(false);break;26case SB_LINEUP:/單擊滾動條向上的箭頭iNowPos=m_Scrollbar.GetScrollPos();iNowPos=iNowPos-1;if(iNowPos20)iNowPos=20;m_Scrollbar.SetScrollPos(iNowPos);m_Edit=m_Scrollbar.GetScrollPos(); UpdateData(false);break;28case SB_PAGEUP:/單擊箭頭與滾塊之間的區(qū)域iNowPos=m_Scrollbar.GetScro

13、llPos();iNowPos=iNowPos-3;if(iNowPosSetRange(0, 100);pSpin-SetPos(50);pSpin-GetBuddy()-SetWindowText(5.0);return TRUE; 設置Spin的范圍是0100,當前位置是50,同時設置它的配對控件的顯示值 58在對話框中添加WM_VSCROLL消息的響應:void CEx9_9Dlg:OnVScroll() if (pScrollBar-GetDlgCtrlID() = IDC_SPIN1) CString strValue; strValue.Format(%3.1f, (double

14、) nPos / 10.0);(CSpinButtonCtrl*)pScrollBar)-GetBuddy()-SetWindowText(strValue); CDialog:OnVScroll(nSBCode, nPos, pScrollBar); 599.7.3 Progress控件的使用 進度控件是一個用來指示長時間操作的進展程度的控件。MFC中表示進度控制的是CProgressCtrl類 進度條有一個范圍和當前位置。范圍表示整個操作的持續(xù)時間,當前位置表示當前進行到的位置,進度條根據(jù)當前位置來判斷進行的百分比,來顯示進度 60 添加一個Progress控件,保持默認ID,設置Smoo

15、th屬性。在旁邊添加一個按鈕,設置ID為“IDC_BUTTON_START”,Caption為“開始” 在OnInitDialog中添加如下代碼:CProgressCtrl* pProg =(CProgressCtrl*) GetDlgItem(IDC_PROGRESS1);pProg-SetRange(0, 100);pProg-SetPos(50);為“開始”按鈕添加點擊事件實現(xiàn)代碼:void CEx9_9Dlg:OnButtonStar() CProgressCtrl* pProg=(CProgressCtrl*)GetDlgItem(IDC_PROGRESS1); pProg-SetP

16、os(0); SetTimer(1000,100,NULL); 61在CCtrlDlg中添加對WM_TIMER消息的響應函數(shù):void CEx9_9Dlg:OnTimer(UINT nIDEvent) if(nIDEvent = 1000)CProgressCtrl* pProg = (CProgressCtrl*) GetDlgItem(IDC_PROGRESS1);pProg-SetPos(pProg-GetPos()+1);if(pProg-GetPos() = 100)KillTimer(nIDEvent);AfxMessageBox(進行完畢);CDialog:OnTimer(nID

17、Event); 每隔0.1秒,進度條前進一步 629.7.4 Slider控件的使用 滑塊控件可以使用戶通過拖動滑塊來快速獲得指定的數(shù)據(jù)。當用戶滑動滑塊的時候,控件將發(fā)送消息來指示變化。 滑塊控件在選擇一系列離散值或者一段連續(xù)范圍內(nèi)的情況下十分有用。 63 在對話框上增加一個Slider控件,設置Point屬性為“Bottom/Right”,然后在旁邊添加一個Static控件,ID設置為IDC_STATIC_SLIDER。該控件用來顯示滑塊的當前位置。 在OnInitDialog函數(shù)中添加如下代碼:CString strText1;CSliderCtrl* pSlide1 =(CSliderC

18、trl*) GetDlgItem(IDC_SLIDER1);pSlide1-SetRange(0, 100);pSlide1-SetPos(50);strText1.Format(%d, pSlide1-GetPos();SetDlgItemText(IDC_STATIC_SLIDER, strText1); 64 為了響應滑塊移動的消息,添加WM_HSCROLL消息的響應(Slider是水平的,如果是垂直的,則需要響應WM_VSCROLL)。實現(xiàn)如下:void CEx9_9Dlg:OnHScroll() if(pScrollBar-GetDlgCtrlID() = IDC_SLIDER1) CSliderCtrl* pSlide = (CSliderCtrl*) pScrollBar;CString strText;strText.Format(%d, pSlide-GetPos();SetDlgItemText(IDC_STATIC_SLIDER,strText);CDialog:OnHScroll(nSBCode, nPos, pScrollBar); 659.7.5 Date Time Pic

溫馨提示

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

評論

0/150

提交評論