【轉】MFC中滑動塊的操作

昨天做了一個scrollbar的控件,今天解決了跟他類似的滑動塊控件,由於操作函數依然很多,於是只能再發一個博客。

滑動控件是Windows中最常用的控件之一。一般而言它是由一個滑動條,一個滑塊和可選的刻度組成,用戶可以通過移動滑塊在相應的控件中顯示對應的值。

(1)打開資源管理器,在對話框中放置一個EDIT控件,然後在它旁邊放上一個Slider控件。基本的框架已經完成了。
(2)對Slider控件右擊,選擇“建立類嚮導”,對剛纔的Slider控件定義一個變量m_Slider,類型爲CSliderCtrl。
(3)在對話框初始化的代碼BOOL CMy601Dlg::OnInitDialog(),後添加相應的屬性。以下是常用的屬性設置函數:

* GetRange,SetRange函數
用於查詢和設置滑動條的取值範圍,默認爲0~100。函數定義形式如下:
void GetRange(int &nMin,int &nMax) const;
void SetRange(int nMin,int nMax,BOOL bRedrGETaw=FALSE);

* GetPos,SetPos函數
用於查詢和設置滑動條的當前值。函數定義形式如下:
int GetPos() const;
int SetPos(int nPos);

* GetLineSize,SetLineSize函數
用於查詢和設置在按一下右或左箭頭時滑塊的移動量,默認爲1個單位。函數定義形式如下:
int GetLineSize() const;
int SetLineSize(int nSize);

* GetPageSize,SetPageSize函數
用於查詢和設置函滑塊和塊移動量,塊移動量是指當按下PgUp或PgDown時滑塊的移動量。函數定義形式如下:
int GetPageSize() const;
int SetPageSize(int nSize);

* SetTicFreq函數
用於設置滑動條刻度的頻度。默認爲一個單位一個函數。函數定義形式如下:
void SetTicFreq(int nFreq);

* SetTic函數
用於在指定的位置設置刻度。Windows默認的刻度是均勻的。函數定義形式如下:
BOOL SetTic(int nTic);

* ClearTics函數
用於清除所有的刻度。函數定義形式如下:
void ClearTics(BOOL bRedraw=FALSE);

我們在初始化時寫入以下語句:
m_Slider.SetRange(-100,100);
m_Slider.SetTicFreq(10);
即:設置範圍爲-100到100,刻度爲每10個單位一個。

(4)現在我們加入事件過程代碼。
選擇Slider的“事件”然後選擇第一個過程(NM_CUSTOMDRAW)隨後加入以下代碼:(即增加 Slider事件的消息響應函數NM_CUSTOMDRAW)
void CMy601Dlg::OnCustomdrawSlider1(NMHDR* pNMHDR, LRESULT* pResult) 
{
UpdateData(TRUE);
m_Int=m_Slider.GetPos();
UpdateData(FALSE); 
*pResult = 0;
}
其中m_Int是定義的EDIT控件的類型爲INT的變量。至此我們的編輯工作結束了。

剛開始做的時候是用昨天的模板做的,但是發現拖動滑塊的時候scrollbar同時也會滑動,在懷疑是不是兩個控件操作函數是否相同,問題先保留,明天再來解決。
原文地址:http://blog.csdn.net/th0624/article/details/5267398
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章