这几天我在写一个关于VBA代码编辑框的扩展功能。我使用鼠标钩子获取到VBE中的代码提示框的hwnd,如图:就是上面淡黄色的那个窗口,得知是RichEdit20A,我使用如下代码修改其里面的内容:
SendMessage(pShare^.MouseInfoStruct.hwnd,WM_SETTEXT,0,LongInt(PChar(Utf8ToAnsi('OnKey(Key As String, [Procedure]) Key 测试用测试用'))));
运行后的效果如下:如上图所示不能完全显示出来,之后我又用鼠标单击了一下OnKey这个方法又全部显示出来了。如下图所示:请问前辈这是什么问题呢?谢谢!
SendMessage(pShare^.MouseInfoStruct.hwnd,WM_SETTEXT,0,LongInt(PChar(Utf8ToAnsi('OnKey(Key As String, [Procedure]) Key 测试用测试用'))));
运行后的效果如下:如上图所示不能完全显示出来,之后我又用鼠标单击了一下OnKey这个方法又全部显示出来了。如下图所示:请问前辈这是什么问题呢?谢谢!
用 movewindow 在你修改文本的时候,同时把那个提示框加大加宽试试效果怎么样
getwindowrect 提示窗口句柄, rct
movewindow 提示窗口句柄, rct.left, rct.top, 这里修改宽度,这里是高度 ,1高度,宽度,你自己酌情修改,不过一般都是计算要显示的文本总长度,宽度再设置,这一步又麻烦了
你先按照这个修改下试试看,可行不
我如下修改了:
GetWindowRect(pShare^.MouseInfoStruct.hwnd,lbRect);
MoveWindow(pShare^.MouseInfoStruct.hwnd,lbRect.Left,lbRect.Top,200,500,True);
但仍然不行。
sendmessage 句柄,wm_lbuttonup,1,1
?
SendMessage(pShare^.MouseInfoStruct.hwnd,WM_SETTEXT,0,
LongInt(Utf8ToAnsi(pchar('OnKey(Key As String, [Procedure])'+#13+
'Key String 类型,必需。用于表示要按的键的字符串。'
+#13+'Procedure Variant 类型,可选。表示要运行的过程名称的字符串。'
))));
但还存在一个问题就是要鼠标滑轮滑一下才能显示出来,如下图所示:鼠标要在上面这张图滑动一下才能显示出下面的效果请问前辈这是为什么呢?
也麻烦前辈帮我看看这帖子,万分感激:
http://topic.csdn.net/u/20100717/13/d3763cbd-d87d-437f-a28f-9e0d0dc3c6e4.html
很奇怪的是它怎么把图片加上去的…………
版主的怎么把我的帖子移到vb版块?请问版主你有仔细看过我的问题吗?哈哈,不管怎么样,就算你在delphi版问,那里很多人也是只会拖放控件和访问数据库啥的,你发到VB或VC的API版说不定知道的人还更多^-^
PS:
呵呵兄台误会了,一是因为我是用Delphi写的钩子,遇到问题了只好到Delphi那里问问,到别的版块只怕又会给一些SBBS,二是我不满Delphi版块的版主对我帖子的胡乱移动。小生也是用VB的,现在学习Windows编程,用Palcal方便些。
可能说明他没有将文本发到控件里面,而是自己存在数组里面,绘图时自己画上去的
解决如下:
使用Spy++监视这个窗口的消息,消息如下: WM_SETTEXT
WM_GETTEXTLENGTH
WM_GETTEXTLENGTH Return value
WM_SETTEXT Return value
//以上四行其实就是对这个文本框设置文字,下面的差不多都是绘画窗口这个窗口的消息。
//以前我是在这个窗口绘画完了才对其进行写入自己定义的文字内容的,从而产生了这个问题。
//我现在的解决方法是在绘画这个窗口之前以及对这个窗口设置文字之后进行自己的SETTEXT。
WM_WINDOWPOSCHANGING
WM_WINDOWPOSCHANGING Return value
WM_NCCALCSIZE
WM_NCCALCSIZE Return value
WM_WINDOWPOSCHANGED
WM_SIZE
WM_SIZE Return value
WM_WINDOWPOSCHANGED Return value
WM_WINDOWPOSCHANGING
WM_WINDOWPOSCHANGING Return value
WM_NCCALCSIZE
WM_NCCALCSIZE Return value
WM_WINDOWPOSCHANGED
WM_SIZE
WM_SIZE Return value
WM_WINDOWPOSCHANGED Return value
WM_WINDOWPOSCHANGING
WM_WINDOWPOSCHANGING Return value
WM_NCCALCSIZE
WM_NCCALCSIZE Return value
WM_WINDOWPOSCHANGED
WM_SIZE
WM_SIZE Return value
WM_WINDOWPOSCHANGED Return value
WM_PAINT
WM_PAINT
WM_PAINT
WM_PAINT
WM_NCPAINT
WM_NCPAINT Return value
WM_ERASEBKGND
WM_ERASEBKGND Return value