开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 3068|回复: 11
收起左侧

[已解决] 易语言设置菜单图标 (取窗口句柄 (), 0, 0, #位图1)

 关闭 [复制链接]
结帖率:94% (308/327)
发表于 2022-3-4 23:19:55 | 显示全部楼层 |阅读模式   内蒙古自治区乌海市
11精币
易语言设置菜单图标 (取窗口句柄 (), 0, 0, #位图1) 想把图片组里的图片到菜单里, 为什么不对?正确如何写?

最佳答案

查看完整内容

搞掂!就是更换了一个子程序!怪不得弄不出来,原来要从读入文件(图片路径)获取的字节集与直接写入程序图片资源的字节集中获取图片句柄是是有差别的。同样都是字节集,可是操作方法却有差别: 下面是测试图:有些地方调试的时候删掉了,你自己补一下吧 贴上源码: 不要忘了采纳啊亲,我这可是一个贴帮你解决两个问题(虽然说是我自己弄错了,⊙﹏⊙b汗 ...

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳

本帖被以下淘专辑推荐:

结帖率:100% (10/10)
发表于 2022-3-4 23:19:56 | 显示全部楼层   广东省佛山市

搞掂!就是更换了一个子程序!怪不得弄不出来,原来要从读入文件(图片路径)获取的字节集与直接写入程序图片资源的字节集中获取图片句柄是是有差别的。同样都是字节集,可是操作方法却有差别:
2.jpg
下面是测试图:有些地方调试的时候删掉了,你自己补一下吧

1.jpg
贴上源码: 已修改1111.e (1.02 MB, 下载次数: 134)

评分

参与人数 2精币 +1 荣誉 +1 收起 理由
hadisi + 1 https://bbs.125.la/forum.php?mod=viewthread&tid=13632440&pid=23856232&am
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

结帖率:100% (10/10)
发表于 2022-3-4 23:49:49 | 显示全部楼层   广东省佛山市
你说的应该是这个dll吧

  
DLL命令名返回值类型公开备 注
SetMenuItemBitmaps逻辑型 设置菜单图标
DLL库文件名:
user32.dll
在DLL库中对应命令名:
SetMenuItemBitmaps
参数名类 型传址数组备 注
子程序名返回值类型公开备 注
(未填写子程序名)   
参数名类 型参考可空数组备 注
参数名类 型参考可空数组备 注
菜单句柄整数型
位置整数型
标志整数型
未选图标句柄整数型
已选图标句柄整数型



一些相关的子程序
  
子程序名返回值类型公开备 注
菜单_添加图标逻辑型 在指定定的菜单处加入图标
参数名类 型参考可空数组备 注
子菜单索引整数型子菜单索引
菜单句柄整数型欲添加图标的菜单句柄
未选图标句柄整数型未选中时的图标句柄,可以用 图标_取句柄() 命令取得 图标句柄
已选图标句柄整数型已选中时的图标句柄,可以用 图标_取句柄() 命令取得 图标句柄
返回 (SetMenuItemBitmaps (菜单句柄, 子菜单索引, 1024, 未选图标句柄, 已选图标句柄))
子程序名返回值类型公开备 注
图片_取句柄整数型 取图片句柄,成功返回图片句柄,失败返回0
参数名类 型参考可空数组备 注
参_图片字节集欲添加为菜单图片的资源
变量名类 型静态数组备 注
局_对象对象0
局_句柄整数型 
局_成员数整数型 
局_成员数 = 取数组成员数 (局_对象) + 1
重定义数组 (局_对象, 真, 局_成员数)
CoInitialize (0)
如果真 (局_对象 [局_成员数].创建图片对象 (参_图片))
CoUninitialize ()
返回 (局_对象 [局_成员数].读数值属性 (“handle”, ))
CoUninitialize ()
返回 (0)
子程序名返回值类型公开备 注
图标_取句柄整数型 取“位图 鼠标图片 图标“句柄,成功返回句柄,失败返回0
参数名类 型参考可空数组备 注
图片路径文本型
图像类型整数型IMAGE_ 开头的常量  默认为 #IMAGE_ICON 图标
变量名类 型静态数组备 注
局_图片高度整数型 
局_图片宽度整数型 
局_图片宽度 = GetSystemMetrics (71)
局_图片高度 = GetSystemMetrics (72)  ' SM_CYMENUCHECK 获取菜单复选号位图的大小
如果真 (是否为空 (图像类型))
图像类型 = #IMAGE_ICON
返回 (LoadImage (0, 图片路径, 图像类型, 局_图片宽度, 局_图片高度, 16))

源码取自精易模块

评分

参与人数 1精币 +1 收起 理由
hadisi + 1 https://bbs.125.la/forum.php?mod=viewthread&tid=13632440

查看全部评分

回复

使用道具 举报

结帖率:94% (308/327)

签到天数: 17 天

 楼主| 发表于 2022-3-5 11:31:08 | 显示全部楼层   内蒙古自治区乌海市
Ls60 发表于 2022-3-4 23:49
你说的应该是这个dll吧

[e=0].版本 2

.版本 2

.子程序 设置菜单图标, 整数型, , 返回 非0表示成功
.参数 窗口句柄, 整数型, , 菜单所在窗口句柄
.参数 列索引, 整数型, , 列索引从0开始
.参数 菜单索引, 整数型, , 菜单索引从0开始
.参数 位图文件, 文本型
.局部变量 MainHandle, 整数型
.局部变量 SubMenuHandle, 整数型
.局部变量 X, 整数型
.局部变量 Y, 整数型
.局部变量 BitmapSave, 整数型

MainHandle = GetMenu (窗口句柄)  ' 取菜单的句柄
SubMenuHandle = GetSubMenu (MainHandle, 列索引)  ' 取得第一个菜单项的句柄
X = GetSystemMetrics (#SM_CXMENUCHECK)  ' 取得菜单位图的尺寸
Y = GetSystemMetrics (#SM_CYMENUCHECK)  ' 取得菜单位图的尺寸
BitmapSave = LoadImageA (0, 位图文件, #IMAGE_BITMAP, X, Y, #LR_LOADFROMFILE)  ' 按系统尺寸装入图像
返回 (SetMenuItemBitmaps (SubMenuHandle, 菜单索引, #MF_BYPOSITION, BitmapSave, BitmapSave))  ' 设置菜单位图


是这样的,调用时:

.版本 2

设置菜单图标 (取窗口句柄 (), 0, 0, 取运行目录 () + “\1.bmp”)
设置菜单图标 (取窗口句柄 (), 0, 1, 取运行目录 () + “\2.bmp”)
设置菜单图标 (取窗口句柄 (), 0, 2, 取运行目录 () + “\3.bmp”)

我想修改成直接读取 图片资源表里的图片,如何正确修改?
设置菜单图标 (取窗口句柄 (), 0, 0, #位图1)  这样为什么无效果?
回复

使用道具 举报

结帖率:94% (308/327)

签到天数: 17 天

 楼主| 发表于 2022-3-5 11:34:18 | 显示全部楼层   内蒙古自治区乌海市
Ls60 发表于 2022-3-4 23:49
你说的应该是这个dll吧

[e=0].版本 2

设置菜单图标 (取窗口句柄 (), 0, 0, #图片1”)  为什么不对?
回复

使用道具 举报

结帖率:94% (308/327)

签到天数: 17 天

 楼主| 发表于 2022-3-5 23:09:33 | 显示全部楼层   内蒙古自治区乌海市
Ls60 发表于 2022-3-4 23:49
你说的应该是这个dll吧

[e=0].版本 2

菜单_添加图标 这个怎么使用?给个例子吧
回复

使用道具 举报

结帖率:94% (308/327)

签到天数: 17 天

 楼主| 发表于 2022-3-6 19:39:11 | 显示全部楼层   内蒙古自治区乌海市
Ls60 发表于 2022-3-4 23:49
你说的应该是这个dll吧

[e=0].版本 2

老师帮忙修改一下吧,源码在 “板凳”层
回复

使用道具 举报

结帖率:100% (10/10)
发表于 2022-3-6 21:01:54 | 显示全部楼层   广东省佛山市
wh1234567 发表于 2022-3-6 19:39
老师帮忙修改一下吧,源码在 “板凳”层

有一说一,一个是从文件路径获取的,一个是从易语言资源里面获取
怎么能一样呢,资源里面的东西貌似都是字节集类型的,也就是说 #图片 是字节集类型的,不是文本型的,不同与 取运行目录 () + “\1.bmp”
我查了一下,你提供的程序里面LoadImageA无非就是从文件路径获取图片句柄,所以我们只要找一个从字节集获取图片句柄的子程序就行了
子程序取自精易源码,凭借个人理解写的,没有实际操作过,菜单这个东西我也不怎么用
  
子程序名返回值类型公开备 注
_启动子程序整数型 本子程序在程序启动后最先执行
设置菜单图标1 (取窗口句柄 (), 0, 0, 取运行目录 ()“\1.bmp”)
设置菜单图标2 (取窗口句柄 (), 0, 2, #图片 )
子程序名返回值类型公开备 注
设置菜单图标1整数型 返回 非0表示成功
参数名类 型参考可空数组备 注
窗口句柄整数型菜单所在窗口句柄
列索引整数型列索引从0开始
菜单索引整数型菜单索引从0开始
位图文件文本型BMP文件路径
变量名类 型静态数组备 注
MainHandle整数型 
SubMenuHandle整数型 
X整数型 
Y整数型 
BitmapSave整数型 
MainHandle = GetMenu (窗口句柄)  ' 取菜单的句柄
SubMenuHandle = GetSubMenu (MainHandle, 列索引)  ' 取得第一个菜单项的句柄
X = GetSystemMetrics ( #SM_CXMENUCHECK )  ' 取得菜单位图的尺寸
Y = GetSystemMetrics ( #SM_CYMENUCHECK )  ' 取得菜单位图的尺寸
BitmapSave = LoadImageA (0, 位图文件, #IMAGE_BITMAP, X, Y, #LR_LOADFROMFILE )  ' 按系统尺寸装入图像
返回 (SetMenuItemBitmaps (SubMenuHandle, 菜单索引, #MF_BYPOSITION, BitmapSave, BitmapSave))  ' 设置菜单位图
子程序名返回值类型公开备 注
设置菜单图标2整数型 返回 非0表示成功
参数名类 型参考可空数组备 注
窗口句柄整数型菜单所在窗口句柄
列索引整数型列索引从0开始
菜单索引整数型菜单索引从0开始
图片字节集字节集BMP文件路径
变量名类 型静态数组备 注
MainHandle整数型 
SubMenuHandle整数型 
X整数型 
Y整数型 
BitmapSave整数型 
MainHandle = GetMenu (窗口句柄)  ' 取菜单的句柄
SubMenuHandle = GetSubMenu (MainHandle, 列索引)  ' 取得第一个菜单项的句柄
BitmapSave = 取图片句柄_从字节集 (图片字节集)
返回 (SetMenuItemBitmaps (SubMenuHandle, 菜单索引, #MF_BYPOSITION, BitmapSave, BitmapSave))  ' 设置菜单位图
子程序名返回值类型公开备 注
取图片句柄_从文件整数型 载入指定位图,成功返回位图句柄,失败返回0
参数名类 型参考可空数组备 注
位图文件路径文本型欲载入的位图文件全路径,只能为BMP格式位图文件路径
返回 (LoadImageA (0, 位图文件路径, 0, 0, 0, 16))
子程序名返回值类型公开备 注
取图片句柄_从字节集整数型 载入指定图片,或者图标.成功返回位图句柄,失败返回0
参数名类 型参考可空数组备 注
图片字节集字节集欲载入的bmp,jpg等图片资源或者ico图标字节集
变量名类 型静态数组备 注
图片对象对象 
图片句柄整数型 
CoInitialize (0)
图片对象.创建图片对象 (图片字节集)
图片句柄 = 图片对象.读数值属性 (“Handle”, )
CoUninitialize ()
返回 (图片句柄)

还有啊你贴代码的时候可以用这个工具不
360截图20220306210112942.jpg

回复

使用道具 举报

结帖率:94% (308/327)

签到天数: 17 天

 楼主| 发表于 2022-3-7 17:01:45 | 显示全部楼层   内蒙古自治区乌海市
Ls60 发表于 2022-3-6 21:01
有一说一,一个是从文件路径获取的,一个是从易语言资源里面获取
怎么能一样呢,资源里面的东西貌似都是 ...

非常感谢老师回复,刚看到回复,论坛没有提示新消息,刚测试了一下可以使用,但是多个菜单项目的话,只能显示最后一个图标,不知道是咋回事,
.版本 2

设置菜单图标2 (取窗口句柄 (), 0, 0, #位图1)
设置菜单图标2 (取窗口句柄 (), 0, 1, #位图2)
设置菜单图标2 (取窗口句柄 (), 0, 2, #位图3) 只能显示最后这个
回复

使用道具 举报

结帖率:100% (10/10)
发表于 2022-3-7 17:10:32 | 显示全部楼层   广东省佛山市
wh1234567 发表于 2022-3-7 17:01
非常感谢老师回复,刚看到回复,论坛没有提示新消息,刚测试了一下可以使用,但是多个菜单项目的话,只能 ...

建议你把相关代码贴出来,我都不知道你是哪里设置错了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表