資源描述:
《MFC滑動條的制作》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、MFC-控件大全-SliderCon所有的控件的創(chuàng)建基本都是同一套道路;第一步:.h中創(chuàng)建一個CSliderCtrl類的對象;??CSliderCtrlm_ctrlSlider;第二步:.cpp中的voidCMyDlg::DoDataExchange(CDataExchange*pDX)函數(shù)進行初始化控件;//初始化控件???voidCMyDlg::DoDataExchange(CDataExchange*pDX){//這個函數(shù)是控件與類成員交換數(shù)據(jù)用的CDialog::DoDataExchange(pDX);//滑塊專用DDX_Control(pDX
2、,IDC_SLIDER1,m_ctrlSlider);}第三步:在BOOLCMyDlg::OnInitDialog()函數(shù)里面進行初始化的設(shè)置;//初始化設(shè)置????BOOLCMyDlg::OnInitDialog(){CDialog::OnInitDialog();??????.........???????m_ctrlSlider.SetRange(0,100);//設(shè)置滑塊位置的最大值和最小值m_ctrlSlider.SetPos(30);?????????//設(shè)置滑塊的默認當前位置}第三步:添加事件處理函數(shù);初始化完畢后最后添加一個事件處理函數(shù)
3、當調(diào)節(jié)滑塊位置的時候能得到相應(yīng)的數(shù)據(jù);??1??.h中添加函數(shù)聲明??????afx_msgvoidOnNMCustomdrawSlider1(NMHDR*pNMHDR,LRESULT*pResult);2??添加消息:???BEGIN_MESSAGE_MAP(CMyDlg,CDialog)???.........???ON_NOTIFY(NM_CUSTOMDRAW,IDC_SLIDER1,OnNMCustomdrawSlider1)???.........3函數(shù)定義;//當調(diào)節(jié)滑塊的時候通過(2)就會調(diào)用這個函數(shù);??//主窗口滑塊voidCMyDl
4、g::OnNMCustomdrawSlider1(NMHDR*pNMHDR,LRESULT*pResult){???intnPos=m_ctrlSlider.GetPos();//獲得滑塊的當前位置??//另外做一個編輯框顯示所調(diào)節(jié)的數(shù)據(jù);CStringstr="";str.Format("%d%%",nPos);SetDlgItemText(IDC_EDIT13,str);}完成//==================================================================================滑動條
5、控件(CSliderCtrl)使用說明滑動條控制(SliderControl)也叫軌道條控制,其主要是用一個帶有軌道和滑標的小窗口以及窗口上的刻度,來讓用戶選擇一個離散數(shù)據(jù)或一個連續(xù)的數(shù)值區(qū)間。通過鼠標或鍵盤來進行數(shù)據(jù)的選擇操作,這在WIN98/95中的很多應(yīng)用程序中都可以看到,如控制面板中的鼠標等,滑動條既可以是水平方式的也可以是垂直方式的。滑動條控制的風(fēng)格如下: TBS_HORZ滑動條是水平方向的 TBS_VERT滑動條是垂直方向的 TBS_LEFT滑動條位于窗口左側(cè) TBS_RIGHT滑動條位于窗口右側(cè) TBS_TOP滑動條位于窗口頂部
6、 TBS_BOTTOM滑動條位于窗口底部 TBS_BOTH滑動條位于窗口兩側(cè) TBS_AUTOTICKS滑動條具有刻度,默認 TBS_NOTICKS滑動條不具有刻度滑動條的刻度條在每一個數(shù)值位置顯示一個刻度標記,如果在滑動條上顯示某一數(shù)值選擇區(qū)間,則應(yīng)使用風(fēng)格TBS_ENABLESELRANGE,此時選擇區(qū)間兩個不再是刻度標記,而是一個小的三角形符號。另外,使用風(fēng)格TBS_NOTHUMB會使滑標消隱起來?;瑒訔l控制在MFC類庫中被封裝為CSliderCtrl控制,其主要操作是設(shè)置刻度范圍、繪制刻度標記、設(shè)置選擇范圍和當前滑標位置等。當用戶進行交
7、互操作時,滑動條控制將向其父窗口發(fā)送消息WM_HSCROLL,所以在應(yīng)用程序中應(yīng)重載父窗口的OnHScroll()成員函數(shù),以便對消息進行正確處理系統(tǒng)發(fā)送的通知代碼、滑標位置和指向CSliderCtrl對象的指針等。由于考慮到和水平卷動桿公用同一個成員函數(shù),OnHScroll()函數(shù)參數(shù)表中的指針變量被定義為CScrollBar*類型,由于實際上消息是由滑動條產(chǎn)生的,所以在程序中必須把這個指針變量強制轉(zhuǎn)換為CSliderCtrl*類型?;瑒訔l和卷動桿的消息代碼和含義都非常類似如TB_BOTTOM等,所以這種處理方法比較合理。SetRange()函數(shù)用來
8、設(shè)置范圍,SetPos()函數(shù)用來設(shè)置當前位置?! 。ǘ┗瑒訔l控制的對象結(jié)構(gòu) 滑動條控制的