熟悉Open ToolsAPI的人请进!

chechy 2001-11-14 08:15:56
我现在正在向Delphi上加自定义的菜单(已经完成)。现在想在菜单旁加个图标,也就是要向相应的

ImageList(通过(BorlandIDEServices as INTAServices).ImageList获得)中装一幅位图。从文件载入

已经成功,但是文件在硬盘上受到路径的限制。现在想通过资源来完成,但一直无法成功。
我刚刚研究GExperts的代码,发现它也是从文件中载入的,没有现成实例。
我愿意出300分求解。(现在就50分,我担心300分可能送不出去)
...全文
190 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
xzgyb 2001-11-20
  • 打赏
  • 举报
回复
欧是这样
chechy 2001-11-20
  • 打赏
  • 举报
回复
我是要用ImageList的,然后设置MenuItem的ImageIndex。不过你的方法我可以试试。
xzgyb 2001-11-20
  • 打赏
  • 举报
回复
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;
chechy 2001-11-20
  • 打赏
  • 举报
回复
但是无论是ImageList、还是Bitmap,只要是从资源中获取,就得要那个HInstance,对不对?
现在,我已经放弃从资源中取得的念头,我改从硬盘中取文件了,实际上就是参照了GExperts的做法。
Kingron 2001-11-20
  • 打赏
  • 举报
回复
我想,你可以这样啊,不一定要通过ImageList来做,菜单可以使用Bitmap来做啊!你自己添加的菜单项肯定也是TMenuItem啊,TMenuItem有什么Glyph还是Bitmap属性?我忘记了,这样难道不可以吗?:)
chechy 2001-11-20
  • 打赏
  • 举报
回复
各位,非常抱歉。我先后5次结贴,每次都是地址没找到,我也没办法了,等CSDN修好了,我在给分吧。
chechy 2001-11-17
  • 打赏
  • 举报
回复
我试过了,还是不行。看来没辙了,过会来结贴。
jjhaonou 2001-11-16
  • 打赏
  • 举报
回复
你可以试试MainInstance。
chechy 2001-11-15
  • 打赏
  • 举报
回复
刚才又测试了一下,看来是不行。看来核心问题是无法获得正确的HInstance(就是Delphi的HInstance)。
再等两天,如果没有更好的答案,那就揭帖。
xh1 2001-11-14
  • 打赏
  • 举报
回复
学习。
xzgyb 2001-11-14
  • 打赏
  • 举报
回复
chechy 2001-11-14
  • 打赏
  • 举报
回复
GetGlyph是得到在New窗口的图标。不过我可以在试试。
xzgyb 2001-11-14
  • 打赏
  • 举报
回复
应该可以吧,我在<<delphi高级开发指南>>中看到的
一个标准窗体向导
是继承自TIExpert
其中有一GetGlyph
用的就是
Result := LoadIcon(HInstance, MakeIntResource('BLANKPRJ'));
另外书上讲的TIMenuItemIntf照书上敲的不好使
源代码我也运行了,不好使出错,不知为什么
chechy 2001-11-14
  • 打赏
  • 举报
回复
To heartbeat_hb(随时):Hook与OTA无关。
chechy 2001-11-14
  • 打赏
  • 举报
回复
谢谢你的回答。我觉得这和OpenToolsAPI非常有关。因为,我就这一项搞不定。主要问题在于HInstance上,从资源中取Bitmap、Icon,需要HInstance,而一般的程序,或者这个不难。但是在OpenToolsAPI里,实际上需要得到的是Delphi的HInstance。不知道能否得到这个参数。
heartbeat_hb 2001-11-14
  • 打赏
  • 举报
回复
这个也许对你有用:

http://www.csdn.net/expert/topic/369/369469.shtm
TechnoFantasy 2001-11-14
  • 打赏
  • 举报
回复
对Open ToolsAPI不懂,不过你的问题好像和Open Tools API关系不大,通过API
函数ImageList_AddIcon(实际上不是实际的API函数)可以将通过图标句柄将一个图标
添加到ImageList中:

ImageList_AddIcon(ImageList1.Handle,hIcon1);
hIcon1为图标句柄。不知这个是否对你有帮助。

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧