在含有捲動軸的 TextBox 中, 如何以程式控制 TextBox 的捲動?
傳送 EM_LINESCROLL 信息給 TextBox 控制檔案,方法是調用 SendMessage API
函式,細節如下:
1. API 的聲明:
Const EM_LINESCROLL = &HB6
Private Declare Function SendMessageBynum Lib "user32" Alias "
SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As
Long, ByVal lParam As Long) As Long
註:如果以上的聲明放在「一般模組」底下, 應在 Const 之前加上 Public 保留
字, 並且將 Declare 之前的 Private 保留字去掉。
2. 調用範例:
ret = SendMessageBynum(Text1.hwnd, EM_LINESCROLL, 0, 1 ) ' 下卷一行
ret = SendMessageBynum(Text1.hwnd, EM_LINESCROLL, 0, -1 ) ' 上卷一行
ret = SendMessageBynum(Text1.hwnd, EM_LINESCROLL, 1, 0) ' 右卷一列
ret = SendMessageBynum(Text1.hwnd, EM_LINESCROLL, -1, 0) ' 左卷一列
ret = SendMessageBynum(Text1.hwnd, EM_LINESCROLL, 1, 1 ) ' 下卷一行且右
卷一列
註:以上的 Text1 為 TextBox 的名稱。
CRichEditCtrl::LineScroll
void LineScroll( int nLines, int nChars = 0 );
參數:
nLines 指定垂直滾動的行數。 nChars 指定水平滾動的字元數。如果帶格式編輯控制項是ES_RIGHT或ES_CENTER風格,則這個值被忽略。編輯風格在Create中指定。 |
說明:
此成員函式用來滾動一個多行編輯控制項的文本。
編輯控制項不能用來垂直滾動過編輯控制項的最後一行。如果當前行的行號再加上nLines指定的行數超過了編輯控制項中的總行數,則將調整這個值,以使在滾動到編輯控制項中的最後一行後再滾動到控制項頂部的行。
LineScroll可以水平滾動過任意行的最後一個字元。
更多的信息,參見Win32文檔中的EM_LINESCROLL。
請參閱:CRichEditCtrl::LineIndex