当前位置: 代码迷 >> PB >> 郁闷,PB11中菜单颜色的修改+放分,该怎么处理
  详细解决方案

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

热度:664   发布时间:2016-04-29 10:41:22.0
郁闷,PB11中菜单颜色的修改+放分
看着菜单颜色可以修改,真是开心啊,结果一到代码中去指定,却说是只读属性,真是太郁闷了,看着其它控件的颜色基本都可以改,就这只能在设计时指定。

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

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

------解决方案--------------------
我来了
------解决方案--------------------
菜单颜色…… PB也一样能改,不单只可以改颜色,还能按某张底图来进行修改~ 主菜单可以,子菜单也行
是用API的,用位图刷子就可以了,提示你一点PB代码吧
C# code
Long ll_hwnd, ll_BitMapBrushLong ll_hMainMenu, ll_hSubMenuLong ll_hBitMapString ls_BitMapFileNameMENUINFO lstr_MenuInfo  //获取菜单的父句柄ll_hwnd = Handle(Parent)//创建位图刷子ll_BitMapBrush = CreateSolidBrush(15920621)//设置MENUINFO结构lstr_MenuInfo.cbSize = 28lstr_MenuInfo.cyMax = 0lstr_MenuInfo.fMask = MIM_BACKGROUNDlstr_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
------解决方案--------------------
学习
------解决方案--------------------
  相关解决方案