为什么 GetMenuString 得不到菜单条目的文本 送分200(200分)

  • 主题发起人 主题发起人 txiuq
  • 开始时间 开始时间
T

txiuq

Unregistered / Unconfirmed
GUEST, unregistred user!
Caption: array[0..255] of char;<br>Hm: HMENU;<br>I:LongWord;<br>我的程序中用Length:= GetMenuString(Hm, I, @Caption, 254, MF_BYPOSITION);<br>I 为菜单条目的位置<br>如果菜单是没有位图的就正确<br>如果菜单条目有位图的话Length就:=0<br>不知什么原因,请教各位。<br>
 
这个API函数好象不认位图,不过你可以把位图读到临时文件或流中再清空菜单位图.<br>然再赋回去,我测试通过.<br>menu1.Items.Bitmap.SaveToFile('temp.bmp');<br>menu1.Items.Bitmap:=nil;<br>Length:= GetMenuString(menu1.Handle, I, @Caption, 254, MF_BYPOSITION);<br>menu1.Items.Bitmap.LoadFromFile('temp.bmp');<br>
 
zml的方法还是可以,但是有没有更简单的方法呢?
 
菜单是其他程序窗口的(不一定是DELPHI写的)怎样办呢?<br>
 
提问者:<br>如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。<br>请认真阅读大富翁论坛规则说明 &nbsp;http://www.delphibbs.com/delphibbs/rules.asp
 
可以直接用API,每个菜单都属于一个window,所以有Handle,只要有handle值就可以得到<br>其Caption,就是你想要的字符串值:)<br>var text : String;<br>sendMessage( handle , WM_GETTEXT , 255,LongInt( Pchar( text )));
 
一般是先getmenu取得主菜单的句柄,然后再getsubmenu向下面一层一层的取。你可能是取<br>的层次不对吧。
 
多人接受答案了。
 
后退
顶部