SendMessage說明 呼叫一個視窗的視窗函式,將一條訊息發給那個視窗。除非訊息處理完畢,否則該函式不會返回。SendMessageBynum, SendMessageByString是該函式的“型別安全”宣告形式 用法:SendMessage 視窗控制代碼,訊息識別符號(也就是SendMessage需要做什麼),訊息識別符號的反回值,訊息識別符號的反回值返回值 Long,由具體的訊息決定 引數表 引數 型別及說明 hwnd Long,要接收訊息的那個視窗的控制代碼 wMsg Long,訊息的識別符號--取決定作用wParam Long,具體取決於訊息 lParam Any,具體取決於訊息 SendMessage 用法大全訊息識別符號 用途 wParam Long lParam Long 返回值BM_CLICK=&HF5 向目標視窗傳送Click指令 0 0 非零表示成功EM_GETLINECOUNT = &HBA 獲取目標視窗文字總行數 0 0 返回行數EM_GETLINE= &HC4 將目標視窗的第wParam行的內容顯示在lParam中 常數,第幾行,第一行為0 String字串陣列 例1 多行TextBox中的快速處理功能在處理多行TextBox時我們經常會碰到以下幾種情況: 希望瞭解多行TextBox中目前共有多少行文字。 想快速返回第N行的文字。用SendMessage函式完成上面兩個任務的方法非常簡單,每個任務只需簡單地傳送一條訊息給多行TextBox即可,兩個訊息分別為:EM_GETLINECOUNT、EM_GETLINE,其它引數和返回值見附表。 下面用一個簡單的例項演示這兩個功能:新建工程,在Form1上新增三個TextBox(名稱分別為Text1-3,將Text1的MultiLine屬性置為True)和一個命令按鈕Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongConst EM_GETLINECOUNT = &HBAConst EM_GETLINE = &HC4Private Sub Command1_Click() Dim str(256) As Byte str(1) = 1 "最大允許存放256個字元 "獲取總行數,結果顯示在文字框text2中 Text2 = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0, 0) "獲取第3行的資料放在str中,轉換為字串後顯示在文字框text3中 SendMessage Text1.hwnd, EM_GETLINE, 2, str(0) Text3 = StrConv(str, vbUnicode)End Sub兩點補充說明:在呼叫SendMessage獲取第N行字串時,lParam需要說明為位元組陣列,在呼叫完成後,再將位元組陣列轉換為字串;另外,呼叫前必須在lParam的前兩個位元組指明允許存放的最大長度,其中第一個位元組為低位,第二個位元組為高位,本例將高位(即str(1))置1.說明最大允許存放256個字元。~~~~~~~`我自己的筆記,你自己慢慢看吧。。
SendMessage說明 呼叫一個視窗的視窗函式,將一條訊息發給那個視窗。除非訊息處理完畢,否則該函式不會返回。SendMessageBynum, SendMessageByString是該函式的“型別安全”宣告形式 用法:SendMessage 視窗控制代碼,訊息識別符號(也就是SendMessage需要做什麼),訊息識別符號的反回值,訊息識別符號的反回值返回值 Long,由具體的訊息決定 引數表 引數 型別及說明 hwnd Long,要接收訊息的那個視窗的控制代碼 wMsg Long,訊息的識別符號--取決定作用wParam Long,具體取決於訊息 lParam Any,具體取決於訊息 SendMessage 用法大全訊息識別符號 用途 wParam Long lParam Long 返回值BM_CLICK=&HF5 向目標視窗傳送Click指令 0 0 非零表示成功EM_GETLINECOUNT = &HBA 獲取目標視窗文字總行數 0 0 返回行數EM_GETLINE= &HC4 將目標視窗的第wParam行的內容顯示在lParam中 常數,第幾行,第一行為0 String字串陣列 例1 多行TextBox中的快速處理功能在處理多行TextBox時我們經常會碰到以下幾種情況: 希望瞭解多行TextBox中目前共有多少行文字。 想快速返回第N行的文字。用SendMessage函式完成上面兩個任務的方法非常簡單,每個任務只需簡單地傳送一條訊息給多行TextBox即可,兩個訊息分別為:EM_GETLINECOUNT、EM_GETLINE,其它引數和返回值見附表。 下面用一個簡單的例項演示這兩個功能:新建工程,在Form1上新增三個TextBox(名稱分別為Text1-3,將Text1的MultiLine屬性置為True)和一個命令按鈕Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongConst EM_GETLINECOUNT = &HBAConst EM_GETLINE = &HC4Private Sub Command1_Click() Dim str(256) As Byte str(1) = 1 "最大允許存放256個字元 "獲取總行數,結果顯示在文字框text2中 Text2 = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0, 0) "獲取第3行的資料放在str中,轉換為字串後顯示在文字框text3中 SendMessage Text1.hwnd, EM_GETLINE, 2, str(0) Text3 = StrConv(str, vbUnicode)End Sub兩點補充說明:在呼叫SendMessage獲取第N行字串時,lParam需要說明為位元組陣列,在呼叫完成後,再將位元組陣列轉換為字串;另外,呼叫前必須在lParam的前兩個位元組指明允許存放的最大長度,其中第一個位元組為低位,第二個位元組為高位,本例將高位(即str(1))置1.說明最大允許存放256個字元。~~~~~~~`我自己的筆記,你自己慢慢看吧。。