读书人

菜单句柄的有关问题

发布时间: 2012-01-23 21:57:28 作者: rapoo

菜单句柄的问题
各位前辈好,小弟想问一个问题,这个问题困扰我很久,还望各位前辈照顾小弟,给个方法。
在VB6中,我通过遍历法已知窗体上所有菜单的句柄、标题、以及层次结构。
但是我不知道怎么获取指定菜单项的名称。
比如某个菜单项:
Name=mnuFile
Caption="文件"

我能得到“文件”这个标题,但是无法得到mnuFile这个名称。
我的思路是通过菜单句柄来获取这个菜单对象的名称。
找了很多API函数的例子,但是都无法获取。

程序是我的程序,不是外部EXE。
菜单的名称我也知道,但是我需要通过函数来获取。

我只能通过GetMenu这一类函数来获取句柄,但是怎么通过句柄获取“mnuFile”这样的名称?

不要说传递对象作为参数,如果是这个,就没有烦恼了。

[解决办法]
获取菜单控件名称,用控件集合controls枚举名称为mnuFile的控件。
[解决办法]

探讨


我现在已经解决这个问题,用了一个笨办法,就是用 FOR EACH iControl IN Form.Controls
然后用 IF TYPEOF iControl IS MENU iControl.Name
因为我发现VB的这个逻辑判断出来的菜单顺序其实和树的先序遍历得到的顺序是一样的。
所以我在类模块中定义了一个结构体 TYPE
Type TypeName
cID=String '菜单名称
hwnd=Long '句柄
end type

再定义这个结构体的数组
先用For Each的方法将Name传入到数组中的cID成员中
然后再用遍历法将菜单的Hwnd传入到数组的hwnd成员中

获得的结果是正确的。
如果大家有更好的方法还望多多赐教。 谢谢

读书人网 >VB

热点推荐