在Visual Basic中,可以通過程序使文本框控件中的內容進行滾動,而不用等待用戶單擊滾動條控件。通過使用Windows API的SendMe ssage函數,可以將一個或多個滾動消息發送給系統,由此來實現上述 功能。
在文本框控件中滾動
在下面的樣例程序中,連接到Left命令按鈕上的代碼將文本框中 的內容向左移動一個字符的位置。當用戶單擊了文本框控件上的水平 滾動條時,該消息被發送到窗口。然而,在這個程序中,是在用戶單擊 命令按鈕時發送該消息。
要控制滾動行為的方向,必須告訴SendMessage函數將一個WM_HSC ROLL消息發送到文本框控件中,並在wParam參數中指定方向參數。下 面是可以在wParam參數中指定的有效設置:
SB_LEFT
往左邊移動較多部分
SB_RIGHT
往右邊移動較多部分
SB_LINELEFT
往左邊移動一個單元
SB_LINERIGHT 往右邊移動一個單元
可見,要將文本框中的文本向左移動一個字符,可以將wParam參數 設置為SB_LINELEF T;要將文本框中的內容向右移動一個字符,則將wP aram參數設置為SB_LINERIGHT,等等。
樣例程序
該程序顯示了如何使用SendMessage函數來滾動文本框控件中的 內容。
1.在Visual Basic中開始一個新的工程,采用缺省的方法建立For m1。
2.將如下常量和聲明語句添加到Form1的通用聲明部分中(注意該 聲明語句需要書寫在一行內):
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA"(B yVal hwnd As Long, ByVal wMsg As Long, ByVa l wParam As Integer, ByVal lParam As Long) As Long
Const SB_LINERIGHT = 1
Const SB_LINELEFT = 0
Const WM_HSCROLL = &H114
3.在Form1上添加一個文本框控件,采用缺省的方法建立Text1。 將其MultiLine屬性設置為True,ScroolBars屬性設置為3-Both。
4.在Form1上添加一個命令按鈕控件,采用缺省的方法建立Comman d1。
將其Caption屬性設置為"左"。
5.將如下代碼添加到Command1的單擊事件中:
Private Sub Command1_Click()
Dim X As Long
X = SendMessage(Text1.hwnd, WM_HSCROLL, SB_LINELEFT, ByV al 0&)
End Sub
6.在Form1上添加第二個命令按鈕控件,采用缺省的方法建立Comm and2,將其Caption 屬性設置為"右"。 r> 7.將如下代碼添加到Command2的單擊事件中:
Private Sub Command2_Click()
Dim X As Long
X = SendMessage(Text1.hwnd, WM_HSCROLL, SB_LINERIGHT, By Val 0&)
End Sub
按下F5鍵來執行該程序。在文本框控件中鍵入一些文本。 單擊左命令按鈕,文本將被往左滾動一個字符。單擊右命令按 鈕,文本將被往右滾動一個字符的位置。