对Open ToolsAPI不懂,不过你的问题好像和Open Tools API关系不大,通过API
函数ImageList_AddIcon(实际上不是实际的API函数)可以将通过图标句柄将一个图标
添加到ImageList中:ImageList_AddIcon(ImageList1.Handle,hIcon1);
hIcon1为图标句柄。不知这个是否对你有帮助。

解决方案 »

  1.   

    这个也许对你有用:http://www.csdn.net/expert/topic/369/369469.shtm
      

  2.   

    谢谢你的回答。我觉得这和OpenToolsAPI非常有关。因为,我就这一项搞不定。主要问题在于HInstance上,从资源中取Bitmap、Icon,需要HInstance,而一般的程序,或者这个不难。但是在OpenToolsAPI里,实际上需要得到的是Delphi的HInstance。不知道能否得到这个参数。
      

  3.   

    To heartbeat_hb(随时):Hook与OTA无关。
      

  4.   

    应该可以吧,我在<<delphi高级开发指南>>中看到的
    一个标准窗体向导
    是继承自TIExpert
    其中有一GetGlyph
    用的就是
    Result := LoadIcon(HInstance, MakeIntResource('BLANKPRJ'));
    另外书上讲的TIMenuItemIntf照书上敲的不好使
    源代码我也运行了,不好使出错,不知为什么
      

  5.   

    GetGlyph是得到在New窗口的图标。不过我可以在试试。
      

  6.   

    刚才又测试了一下,看来是不行。看来核心问题是无法获得正确的HInstance(就是Delphi的HInstance)。
    再等两天,如果没有更好的答案,那就揭帖。
      

  7.   

    各位,非常抱歉。我先后5次结贴,每次都是地址没找到,我也没办法了,等CSDN修好了,我在给分吧。
      

  8.   

    我想,你可以这样啊,不一定要通过ImageList来做,菜单可以使用Bitmap来做啊!你自己添加的菜单项肯定也是TMenuItem啊,TMenuItem有什么Glyph还是Bitmap属性?我忘记了,这样难道不可以吗?:)
      

  9.   

    但是无论是ImageList、还是Bitmap,只要是从资源中获取,就得要那个HInstance,对不对?
    现在,我已经放弃从资源中取得的念头,我改从硬盘中取文件了,实际上就是参照了GExperts的做法。
      

  10.   

    chechy老大,我不知你怎么写的,我刚才试了一下加上去了,我只是这么试了一下
    {$R gyb.res}
    procedure Register;
    var
      MainMenu: TMainMenu;
      MenuItem: TMenuItem;
      TmpMenuItem: TMenuItem;begin
      MainMenu := (BorlandIDEServices as INTAServices).MainMenu;
      MenuItem := MainMenu.Items.Find('&Component');
      TmpMenuItem := TMenuItem.Create(MainMenu);
      TmpMenuItem.Caption := 'xzgyb';
      TmpMenuItem.Bitmap.Handle := LoadBitmap(Hinstance, 'GYB');
      MenuItem.Add(TmpMenuItem);
    end;
      

  11.   

    我是要用ImageList的,然后设置MenuItem的ImageIndex。不过你的方法我可以试试。