VC通用控制項程式設計之CSlider控制項

2021-05-23 13:41:57 字數 4630 閱讀 9124

滑動條控制(slider control)也叫軌道條控制,其主要是用乙個帶有軌道和滑標的小視窗以及視窗上的刻度,來讓使用者選擇乙個離散資料或乙個連續的數值區間。通過滑鼠或鍵盤來進行資料的選擇操作,這在win98/95中的很多應用程式中都可以看到,如控制面板中的滑鼠等,滑動條既可以是水平方式的也可以是垂直方式的。滑動條控制的風格如下:

tbs_horz

滑動條是水平方向的tbs_vert 滑動條是垂直方向的

tbs_left 滑動條位於視窗左側tbs_right 滑動條位於視窗右側

tbs_top 滑動條位於視窗頂部tbs_bottom 滑動條位於視窗底部

tbs_both 滑動條位於視窗兩側tbs_autoticks滑動條具有刻度,預設

tbs_noticks

滑動條不具有刻度

滑動條的刻度條在每乙個數值位置顯示乙個刻度標記,如果在滑動條上顯示某一數值選擇區間,則應使用風格tbs_enableselrange,此時選擇區間兩個不再是刻度標記,而是乙個小的三角形符號。另外,使用風格tbs_nothumb會使滑標消隱起來。

滑動條控制在mfc類庫中被封裝為csliderctrl控制,其主要操作是設定刻度範圍、繪製刻度標記、設定選擇範圍和當前滑標位置等。當使用者進行互動操作時,滑動條控制將向其父視窗傳送訊息wm_hscroll,所以在應用程式中應過載父視窗的onhscroll()成員函式,以便對訊息進行正確處理系統傳送的通知**、滑標位置和指向csliderctrl物件的指標等。由於考慮到和水平捲動杆公用同乙個成員函式,onhscroll()函式引數表中的指標變數被定義為cscrollbar*型別,由於實際上訊息是由滑動條產生的,所以在程式中必須把這個指標變數強制轉換為csliderctrl*型別。滑動條和捲動杆的訊息**和含義都非常類似如tb_bottom等,所以這種處理方法比較合理。setrange()函式用來設定範圍,setpos()函式用來設定當前位置。

(二)滑動條控制的物件結構

滑動條控制的建立方法

csliderctrl &sliderctrl 建立滑動條控制物件結構;create 建立滑動條控制物件並繫結物件

滑動條控制類csliderctrl::create的呼叫格式如下:

bool create( dword dwstyle, const rect& rect, cwnd* pparentwnd, uint nid );

其中引數dwstyle用來確定滑動條控制風格;引數rect用來確定滑動條控制的大小和位置;引數pparentwnd用來確定滑動條控制的父視窗指標;引數nid用來確定滑動條控制的控制符id值。

2、滑動條控制的類屬性

滑動條控制物件的類屬性包括取得滑動條大小getlinesize、設定滑動條大小setlinesize、取得滑動條頁大小getpagesize、設定滑動條頁大小setpagesize、取得滑動條最大位置getrangemax、取得滑動條最小位置getrangemin、取得滑動條範圍getrange、設定滑塊最小位置setrangemin、設定滑塊最大位置setrangemax、設定滑動條範圍setrange、取得滑塊當前位置getselection、設定滑塊當前位置setselection、取得滑動條當前位置getpos和設定滑動條當前位置setpos等。

3、滑動條控制的操作方法

滑動條控制的操作方法包括清除滑動條當前選擇clearsel、驗證滑動條當前位置是否在最大最小位置之間verifypos和清除當前刻度標誌cleartics。

滑動條控制的應用技巧示例

2、在對話方塊中設定滑動條控制,其id為idc_slider;

3、在對話方塊初始**中增加控制的範圍和位置:

(1)在sliddlg.h中設定資料成員,用來表示滑動條的當前值:

//sliddlg.h

class csliddlg:public cdialog

(2)在sliddlg.cpp中設定初始狀態

bool csliddlg::oninitdialog()

(3)完善滑動條的訊息處理,利用類嚮導classwizard增加對話方塊視窗的wm_hscroll訊息處理函式,並取得滑標所指位置值:

void csliddlg::onhscroll(uint nsbcode,uint npos,cscrollbar *pscrollbar) vc

通用控制項程式設計之cstatusbar控制項

(一)狀態條控制的主要功能

狀態條控制(status barcontrol

)比較容易理解,使用起來也比較簡單。狀態條是位於父視窗底部的乙個水平子視窗,它可以被分成多個顯示資訊的小區域。其mfc中封裝的cstatusbarctrl控制類提供了應用的基本方法。

(二)狀態條控制的物件結構 1

、狀態條控制的建立方法

cstatusbarctrl &statusbarctrl

建立狀態條控制物件結構;create 建立狀態條控制物件並繫結

狀態條控制類cstatusbarctrl::create的呼叫格式如下:

bool create( dword dwstyle,const rect& rect,cwnd* pparentwnd,uint nid);

其中引數dwstyle用來確定狀態條的控制風格;引數rect用來確定狀態條視窗的大小和位置;引數pparentwnd用來確定狀態條父視窗的指標;nid用來確定狀態條控制的識別符號。

狀態條控制風格可以是下列值的組合:ccs_bottom、ccs_nodivider、ccs_nohilite、ccs_nomovey、ccs_noparentalign、ccs_noresize和ccs_top等,具體內容和含義請見工具條控制中的有關部分。

2、狀態條控制的類屬性

狀態條控制類屬性包括設定給定部分顯示文字settext、取得給定部分的文字gettext、設定狀態條區域劃分數及其每部分的右邊座標setparts、取得狀態條區域劃分數量getparts、取得狀態條的水平和垂直寬度getborders和取得狀態條矩形區域getrect。

(三)狀態條控制的應用技巧

狀態條控制除可以顯示一定的幫助和提示資訊外,還可以實現響應滑鼠輸入等功能。這裡以在狀態條上顯示滑鼠移動座標為例,具體說明其應用技巧。

利用應用程式嚮導生成的程式**中,狀態條作為主視窗的子視窗,其具有乙個afx_idw_status _bar識別符號,通過它呼叫函式getdescendantwindow()和afxgetmainwnd

(),就可以取得狀態條視窗的指標。由於基於文件的應用程式在建立時就具有狀態條區域,所以只要利用類嚮導簡單地加入滑鼠移動訊息處理功能函式和下述函式**,就可以實現這一功能:

void ctestview::onmousemove(uint nflags,cpoint point)

cscrollview::onmousemove(nflags,point); }

vc通用控制項程式設計之cprogress控制項

(一)進度條的主要功能

進度條控制(progress control)主要用來進行資料讀寫、檔案拷貝和磁碟格式等操作時的工作進度提示情況,如安裝程式等,伴隨工作進度的進展,進度條的矩形區域從左到右利用當前活動視窗標題條的顏色來不斷填充。

進度條控制在mfc類庫中的封裝類為cprogressctrl,通常僅作為輸出類控制,所以其操作主要是設定進度條的範圍和當前位置,並不斷地更新當前位置。進度條的範圍用來表示整個操作過程的時間長度,當前位置表示完成情況的當前時刻。setrange()函式用來設定範圍,初始範圍為0-100,setpos()函式用來設定當前位置,初始值為0,setstep()函式用來設定步長,初始步長為10,stepit()函式用來按照當前步長更新位置,offsetpos()函式用來直接將當前位置移動一段距離。如果範圍或位置發生變化,那麼進度條將自動重繪進度區域來及時反映當前工作的進展情況。

進度條的物件結構

進度條控制的建立方法

cprogressctrl &progressctrl 建立進度條控制物件結構

create 建立進度條控制物件並繫結物件

進度條控制類cprogressctrl::create的呼叫格式如下:

bool create( dword dwstyle,const rect& rect, cwnd* pparentwnd, uint nid );

其中引數dwstyle用來確定進度條控制的控制風格;引數rect用來確定進度條控制的大小和位置;引數pparentwnd用來確定進度條父視窗指標;引數nid用來確定進度條控制的控制符id值。

2、進度條控制的類屬性

進度條控制的類屬性包括設定進度條最大最小控制範圍setrange、設定進度條當前位置setpos、設定進度條當前位置偏移值offsetpos和設定進度條控制增量值setstep。

3、進度條控制的操作方法

進度條控制的操作方法主要是使進度條控制並重繪進度條的stepit函式。

進度條控制的應用技巧示例

2、在對話方塊中設定進度條和靜態文字控制,其id分別為idc_prog和idcpercent;

在對話方塊初始**中增加控制的範圍和位置:

在progdlg.h中設定兩個資料成員,用來表示進度條的最大值和步長:

//progdlg.h

class cprogdlg:public cdialog

(2)在progdlg.cpp中設定初始狀態

bool cprogdlg::oninitdialog()

(3)完善wm_timer訊息處理,使進度條按照當前步長進行更新,同時完成進度條的百分比顯示:

void cprogdlg::ontimer(uint nidevent)

VC通用控制項程式設計之CList控制項

一 列表控制的主要功能 列表控制和視 list control view 主要用來以各種方式顯示一組 資料記錄供使用者進行各種操作,windows98 95中資源管理器中的 檢視 標籤下的 大圖示 小圖示 列表 詳細資源 就是乙個非常好的典型應用。列表中的記錄可以包括多個 資料項,也可以包括表示 資...

使用VC自繪美化通用控制項

在vc60中新建乙個對話方塊工程,新增乙個新類,根據你要美化的控制項選擇對應的基類,如我要美化static控制項,就選擇cstatic做為基類,新類名為cstaticex。在新類中新增兩個類成員變數,乙個為控制項的背景色,乙個為文字的顏色 private colorref m backcolor c...

VC通用控制項自適應螢幕類

此為我程式中的乙個類,本用於wince,但在桌面系統上也同樣適用!使用方法 在wm initdialog或wm create訊息中加入 cwindowanchor begincontrolbound hwnd 手動調整控制項位置 cwindowanchor addcontrol hwnd,idc s...