vb怎样使用sendmessage()函数发送EM_gettextex消息时里面的wParam和lParam参数个代表什么意思?
lihonggen0你好:
我做一个程序是用于自动复制阿里旺旺聊天窗体的内容(是指实时显示聊天文字的那个窗体,不是文字输入框),我已经获得该聊天显示控件RichEdit20A的句柄,可是接下去写sendmessage()函数发消息EM_GETTEXTEX消息到那个RichEdit20A时,不明白sendmessage()函数在发送EM_GETTEXTEX消息时,wParam和lParam两个参数是代表什么意思?虽然看了很多资料还有愚钝不是很明白,查了google,baidu都查不到详细的说明和实例,那是相当郁闷,所以想求教下您,谢谢了!
还有网上找了很多资料,不过都是c或者c++的资料,里面有GETTEXTEX对象。在vb中怎么样才能用这个对象,要重新用一个结构体定义这个对象,还是引用哪个dll就OK,就可以正常使用GETTEXTEX这个对象呢?还有GETTEXTEX里面成员(cb、flags、codepage、lpDefaultChar、lpUsedDefChar)的值在sendmessage()函数发送EM_GETTEXTEX消息时各是什么意思?以下是网上找到的C++的代码:
TCHAR buf[200];
GETTEXTEX gt;
gt.cb=200;
gt.flags=GT_DEFAULT;
gt.codepage=CP_ACP;
gt.lpDefaultChar=NULL;
gt.lpUsedDefChar=NULL;
SendMessage(hEdit,EM_GETTEXTEX,(WPARAM)>,(LPARAM)buf);
红色标记的地方我就是看不懂什么意思?假设已知RichEdit20A句柄,程序复制RichEdit20A中的内容在vb中语句应该是怎么样的写法,最好能有实例,写出语句给我看下,谢谢了,希望你知道话能帮下忙!
[解决办法]
Private Type GETEXTEX cb As Long flags As Long codepage As Long lpDefaultChar As Long lpUsedDefChar As LongEnd TypePrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _ByVal wParam As Long, ByVal lParam As Long) As LongPrivate Declare Function GetLastError Lib "kernel32" () As LongPrivate Sub Command1_Click() Dim buf As String Dim gt As GETEXTEX buf = Space(240) RichTextBox1.Text = "测试数据总共二十四个字节" gt.cb = 24 gt.flags = 0 gt.codepage = 1200 gt.lpDefaultChar = 0 gt.lpUsedDefChar = 0 Call SendMessage(ByVal RichTextBox1.hwnd, ByVal 1118&, ByVal VarPtr(gt), ByVal StrPtr(buf)) MsgBox GetLastError MsgBox bufEnd Sub
[解决办法]
常量EM_GETTEXTEX
你也可以先定义
const EM_GETTEXTEX = 1118&
然后使用EM_GETTEXTEX.
使用API,建议去查MSDN。