专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > PB

郁闷,PB11中菜单颜色的修改+放分,该怎么处理

发布时间:2011-06-29 20:33:01 文章来源:www.iduyao.cn 采编人员:星星草
郁闷,PB11中菜单颜色的修改+放分
看着菜单颜色可以修改,真是开心啊,结果一到代码中去指定,却说是只读属性,真是太郁闷了,看着其它控件的颜色基本都可以改,就这只能在设计时指定。

哪位知道有啥偏门方法可以在代码中修改不?

------解决方案--------------------
不会有方法的。按手册上说的,你只能改这三个MenuAnimation, MenuImage, MenuTitleText
------解决方案--------------------
SuperMenu不能满足要求?
------解决方案--------------------
先Mark 一下,关注
------解决方案--------------------
这需求也太变态了
------解决方案--------------------
没有试过,尝试下自己做个Mneu吧

------解决方案--------------------
我来了
------解决方案--------------------
菜单颜色…… PB也一样能改,不单只可以改颜色,还能按某张底图来进行修改~ 主菜单可以,子菜单也行
是用API的,用位图刷子就可以了,提示你一点PB代码吧
C# code
Long ll_hwnd, ll_BitMapBrush
Long ll_hMainMenu, ll_hSubMenu
Long ll_hBitMap
String ls_BitMapFileName
MENUINFO lstr_MenuInfo  

//获取菜单的父句柄
ll_hwnd = Handle(Parent)

//创建位图刷子
ll_BitMapBrush = CreateSolidBrush(15920621)

//设置MENUINFO结构
lstr_MenuInfo.cbSize = 28
lstr_MenuInfo.cyMax = 0
lstr_MenuInfo.fMask = MIM_BACKGROUND
lstr_MenuInfo.hbrBack = ll_BitMapBrush

//获取窗口主菜单的句柄
ll_hMainMenu = GetMenu(ll_hwnd)

//设置主菜单信息
SetMenuInfo(ll_hMainMenu, lstr_MenuInfo) 

//重新绘制菜单
DrawMenuBar(ll_hwnd)

//释放对象
DeleteObject(ll_hBitMap)

------解决方案--------------------
引用楼主 xiongxiao 的帖子:
看着菜单颜色可以修改,真是开心啊,结果一到代码中去指定,却说是只读属性,真是太郁闷了,看着其它控件的颜色基本都可以改,就这只能在设计时指定。

哪位知道有啥偏门方法可以在代码中修改不?

------解决方案--------------------
探讨
menubackcolor这个属性正常讲在代码里是只读的(a readonly property),这个可能和PB控制菜单的机制有关。
但也不是绝对的:),可以通过edit source一个菜单,直接修改其源代码来实现。通过查看源代码可以发现每个菜单项都会有一个menubackcolor属性的定义,一般对第一个菜单的属性的修改,可以导致整个菜单的属性的修改。我们先来定义一个全局的long型变量gl_color=rgb(255,0,0),然后在edit source里将menubackcolor= gl_color,刚…

------解决方案--------------------
学习一下!
------解决方案--------------------
mark
------解决方案--------------------
全局变量的方法的话,即使菜单创建了,我想也可以通过先hide()再show来改变。
至于你说的状态条,如果我没猜错,也就是说你用了ms 的common control的话,
通常的方法就是向你的控件发消息,不过帮你翻了一下只有ie的status bar才支持
SB_SETBKCOLOR这个消息。。。。so,use pfc。

------解决方案--------------------
探讨
再问个问题,状态条的颜色如何修改?我用的状态条是系统DLL中的一个类,用扩展类做的一个状态条

------解决方案--------------------
学习中 太强了
------解决方案--------------------
这个可以通过 GETCLIENTRECT,GETDC,CREATESOLIDBRUSH,FILLRECT等API,然后在控件的PAIN(PBM_PAIN)事件里重新绘制背景色,
但这样控件原来的外观就没有了,很麻烦,不如自己用用户自定义控件写一个来的快和方便。
------解决方案--------------------
真好,我也接点分
------解决方案--------------------
过来长长见识
------解决方案--------------------
自己写个自定义的菜单对象,这样就好些了
------解决方案--------------------
jf
------解决方案--------------------
学习
------解决方案--------------------
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: