请帮我看看这段C++代码怎么翻译成pascal的。(100分)

  • 主题发起人 主题发起人 satanmonkey
  • 开始时间 开始时间
S

satanmonkey

Unregistered / Unconfirmed
GUEST, unregistred user!
C++代码片段如下:<br> if (hCtxMenu)<br> {<br> HMENU hSubMenu = GetSubMenu(hCtxMenu, dwID);<br> if (hSubMenu)<br> {<br> // Get the language submenu<br> CComVariant var;<br> hr = spCT-&gt;Exec(&amp;CGID_ShellDocView, SHDVID_GETMIMECSETMENU, 0, NULL, &amp;var);<br> if (SUCCEEDED(hr))<br> {<br> MENUITEMINFO mii = {0};<br> mii.cbSize = sizeof(mii);<br> mii.fMask &nbsp;= MIIM_SUBMENU;<br> mii.hSubMenu = (HMENU) var.byref;<br><br> // Add language submenu to Encoding context item<br> SetMenuItemInfo(hSubMenu, IDM_LANGUAGE, FALSE, &amp;mii);<br><br>。。。。<br>}<br>}<br>这句我翻译不来<br>mii.hSubMenu = (HMENU) var.byref;<br>我这里把var申明为<br>ComVar1,ComVar2:OLEVariant;<br>使用mii.hSubMenu=HMENU(Comvar1.byref)出错<br>我对C++不熟悉,这个byref什么意思?delphi里该怎么表示?<br>
 
var是pascal的关键字,你把它改成_var看看
 
估计是传引用的意思,毕竟 CComVariant 是一个类,即 var 是一个对象,而想<br>要转换为 HMENU 则需要一个普通类型;在 delphi 里面 OleVariant 不是对象,<br>而且会自动转换,所以可以这样试一试:<br>&nbsp; mii.hSubMenu=HMENU(Comvar1)<br>
 
自己解决了。
 
学习一下
 
多人接受答案了。
 
后退
顶部