slider滑塊用法
Slider用法:
1、設定、取得滑動範圍:
void SetRange( int nMin, int nMax, BOOL bRedraw = FALSE );
void GetRange( int& nMin, int& nMax ) const;
2、設定、取得按下鍵盤上左右箭頭滑動間隔:
int SetLineSize( int nSize );
int GetLineSize( ) const;
3、設定、取得按下鍵盤上PgUp、PgDown時滑動間隔:
int SetPageSize( int nSize );
int GetPageSize( ) const;
4、設定、取得滑塊位置:
void SetPos( int nPos );
int GetPos( ) const;
5、設定滑動條刻度的頻度:
void SetTicFreq( int nFreq );
6、用函式SetTic來在指定位置設定刻度.Windows自動顯示的刻度是均勻的,利用該函式可以人為設定不均勻的刻度
BOOL SetTic( int nTic );
7、用函式ClearTics來清除所有的刻度
void ClearTics( BOOL bRedraw = FALSE );
在對話方塊中放一個Slider控制元件,為其關聯相應的Ctrl型變數為m_slider。vc 2008中關聯方法為:在控制元件上右擊,add variable。在vc6.0中,右擊class wizard中新增。在基於dialog的mfc程式中,該控制元件的初始化即設定範圍等放在OnInitDialog()中,若是文件檢視的mfc應用程式(檢視基類為CFormView),則該控制元件的初始化放在C****View的OnInitialUpdate函式中
該控制元件的訊息:
NM_CUSTOMDRAW,是子控制元件通知其父控制元件它已經完成重畫功能,對Slider來說也就是我們每次滑鼠按住滑塊移動一下就能使滑塊向擁有該滑塊的Slider產生一個NM_CUSTOMDRAW訊息,以便使用者實時獲得移動滑塊時的是實時值。
NM_RELEASEDCAPTURE,是子控制元件被滑鼠按住拖動到適當位置以後滑鼠釋放時子控制元件向父控制元件產傳送的訊息,對於Slider來說就是每次滑塊被滑鼠拖曳完滑鼠釋放的時候滑塊給Slider傳送的訊息。
還有一個訊息就是NM_OUTOFMEMORY,是當沒有足夠記憶體來相應子控制元件時向父控制元件傳送的訊息。
而在vc2008中又添加了兩個訊息NM_THEMECHANGED和TRBN_THUMBPOSCHANGING
Slider控制元件本身並沒有響應滑動的訊息函式,但可以通過主窗體的OnHScroll()響應。在類嚮導中為對話方塊新增WM_HSCROLL訊息,在響應函式中新增:
void CDlgSetup::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CSliderCtrl *pSlidCtrl=(CSliderCtrl*)GetDlgItem(IDC_SLIDER1);
m_int=pSlidCtrlHue->GetPos();//取得當前位置值
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
//m_int 即為當前滑塊的值。
Scroll bar用法:
滾動條通常用於瀏覽顯示內容、確定位置,也可以作為資料輸入的工具。通過程式設計控制,可以為不具備滾動能力的控制元件提供滾動功能。在實際應用中,滾動條也常用作數量、速度的指示器,如在一些多媒體中用來控制音量、畫面的滾動速度等。
滾動條分為水平滾動條(HScrollBar)和垂直滾動條(VScrollBar)兩種,分別用工具箱中的 和 工具繪製。在滾動條的兩端各有一個帶箭頭的按鈕,中間有一個滑塊。當滾動條位於最左端或頂端時,表示其值最小,反之為最大。除了方向之外,水平滾動條和垂直滾動條的動作是相同的。
1.滾動條的常用屬性
滾動條除支援Enabled、Height、Left、Caption、Top、Visible、Width等標準屬性外,還有幾個表示滾動條取值的常用屬性,見表4-6-1。
表4-6-1滾動條的常用屬性
屬性 |
說明 |
Max |
該屬性用於設定滾動條所表示的最大值,為滑動塊在右(或下)端時的值。預設值為32767,其取值範圍為-32767~32767。 |
Min |
該屬性用於設定滾動條所表示的最小值,為滑動塊在左(或上)端時的值。預設值為0,其取值範圍為-32767~32767。 |
Value |
該屬性返回或設定滑動塊當前位置的值,如果使用者拖動滑動塊,Value屬性值隨之改變,它的取值始終介於Max和Min屬性值之間(包括這兩個值)。若在程式中對該屬性賦值,則會根據數值移動滾動塊的位置。注意不能把Value屬性的值設在Min和Max範圍之外。 |
LargeChange |
該屬性用於設定當用滑鼠單擊滑動塊和箭頭之間的區域(不包括滑動塊)時,Value屬性值的增量或減量,該屬性的預設值為1,取值範圍為1~32767。 |
SmallChange |
該屬性用於設定當使用者單擊滾動箭頭時,Value屬性值的變化量,該屬性的預設值為1,取值範圍為1~32767。 |
2.滾動條的常用事件
滾動條能響應的事件主要有以下幾種,其中最常用的是Change和Scroll事件。
Change Scroll KeyDown KeyUp KeyPass LostFocus GetFocus
⑴ Change事件
當單擊滾動箭頭、單擊滾動條區域或拖動滑動塊結束時將觸發Change事件。
⑵ Scroll事件
當在滾動條內拖動滑動塊時觸發該事件。
在程式執行中,每當滾動條的Value屬性發生變化時,就發生Change事件。而每當使用者用滑鼠單擊滾動箭頭、單擊滑動塊與箭頭之間的區域或沿著滾動條拖拉滑動塊的動作結束時,滾動條的Value屬性就發生變化。
儘管拖動滑動塊會引起Value屬性的變化,從而觸發Change事件,但在滾動條內拖動滑動塊時,並不發生Change事件,此時將觸發Scroll(滾動)事件。
在實際程式設計中,常用Scroll事件來跟蹤滾動條在拖動時數值的變化。由於在單擊滾動條或滾動箭頭時,將產生Change事件,因此常利用Change事件來獲得滾動條變化後的最終值。