如何改变菜单的背景色?100分

makefile 2004-08-31 06:30:30
VB中如何改变菜单的背景色,
在卓面中直接改变改变系统的菜单背景色,VB中的菜单颜色可以改变,
但是所有软件的菜单背景色也都改了。
有什么方法只改变VB中一个FORM的菜单背景颜色啊?
...全文
230 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pancult 2004-09-01
  • 打赏
  • 举报
回复
用subclass 子类化,拦截系统消息,重画菜单。
给你点例子,完全注解的。

''Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
''Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

''Public Const GWL_WNDPROC = (-4)
''Public Const WM_CONTEXTMENU = &H7B

''Public Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long 'GetMenu 作用是获取指定窗体的句柄
''Public Declare Function TrackPopupMenuBynum Lib "user32" Alias "TrackPopupMenu" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal nReserved As Long, ByVal hwnd As Long, ByVal lprc As Long) As Long
'Alias "TrackPopupMenu"是api的真名,比如
'Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long就是说GetMenu 在user32库里面的函数名就是GetMenu ,如果想在本程序中用另一个名字来使用这个函数,就必须加上Alias "???",比如我想用ABC来调用GetMenu 函数,那么可以这样声明:
'Private Declare Function ABC Lib "user32" Alias "GetMenu "(ByVal hwnd As Long) As Long,这个时候必须加Alias 来指定真名,因为user32库里的函数名字不可能改变的

''Public Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPOS As Long) As Long
'GetSubMenu是获取子菜单的句柄
''Public Const TPM_LEFTALIGN = &H0&
''Public Const TPM_RIGHTALIGN = &H8&
''Public hMenu As Long
''Public pMenu As Long
''Public Proroc As Long

''Function WindowProc(ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'hwnd 就是产生消息的窗体(包括任何对象,按扭之类)的句柄,msg 就是消息内容,wParam 和lParam 是消息的附加消息
''Select Case msg
''Case WM_CONTEXTMEN '对msg来产生条件分歧,当产生WM_CONTEXTMENU(case WM_CONTEXTMENU)时执行的
'代码 ,case else就是说当产生的消息不是WM_CONTEXTMENU消息(其他消息)时候的分支过程
''Dim xl As Long 'Dim yl As Long,这就是鼠标坐标值的变量,我们等以下将数据放到这两个变量里
'' xl = lParam Mod H10000 'LParam参数为鼠标指针的屏幕座标(低字为X座标,高字为Y座标),其WParam参数为鼠标指针的窗口句柄
'' Y1 = lParam / &H10000

''Case Else
''WindowProc = CallWindowProc(Proroc, hwnd, msg, wParam, lParam)
'windows系统在WindowProc 过程里给了我们proroc hwnd msg wparam lparm这些参数供我们使用,
'现在我们当然要原封不动的还给他们,所以。。。proroc 告诉刚才在
'窗体里的Proroc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf WindowProc)的函数地址。
'hwnd,是被(控制)的对象句柄。 msg是此刻产生的消息内容。

''End Select
''End Function
of123 2004-09-01
  • 打赏
  • 举报
回复
也许可以通过 GetMenuItemRect 和 GetMenuString 取得范围和文字,然后重画。
makefile 2004-09-01
  • 打赏
  • 举报
回复
activebar2.1打开xplook后,菜单底色就是灰的了,怎么改也没用。
用vsnetmenu,有菜单项的地方变了颜色,而右侧区域还是灰色的,如何给换掉啊。
先在想要个比较简单的跟其他合并比较好的,第三方控件真难啊。
lrest 2004-08-31
  • 打赏
  • 举报
回复
有两个办法:
1、用其他控件如 activebar2.1
2、用subclass 子类化,拦截系统消息,重画菜单。(有点难度,api要非常熟悉)
rainstormmaster 2004-08-31
  • 打赏
  • 举报
回复
http://blog.csdn.net/goodname008/archive/2004/07/12/39664.aspx
wwqna 2004-08-31
  • 打赏
  • 举报
回复
要改变菜单颜色还是比较困难的
用其它的控件吧,
项目名称:高仿QQ2013通讯DEMO-10.30更新 版本号:10.30 最新版本 下载内容: (C#)CC2013局域网通讯源码一份, 可引用至工具箱最新版CSkin.dll-10.30版本界面库一份。 界面库更新说明: CC2013-10.30 1.由于SkinForm名字太多人使用,界面库命名正式改为CSkin.dll,官网www.cskin.net。 2.SkinTabControl标签中添加菜单箭头,可点击展开菜单。 3.SkinTabControl添加标签关闭按钮。 4.修复部中文乱码问题。 5.优化好友列表右键菜单。 6.将窗体自定义系统按钮改为集合模式,可添加无数个自定义系统按钮。自定义系统按钮事件中可以 e.参数 来判断。 7.增加360安全卫士-DEMO案例。 8.增加SkinAnimatorImg控件,用于支持位图动画的播放。如360的动态logo。 9.各种细节BUG优化。 CC2013-10.11 1.添加SkinTabControlEx,加入更加自定义的美化属性和动画效果。 2.添加SkinAnimator,通用动画控件。 3.添加Html编辑器控件 4.修复SkinButton图标和文本相对位置的BUG CC2013-9.26 1.优化好友列表CPU占用 2.好友列表加入好友登录平台属性:安卓 苹果 WEBQQ PC 3.优化标题绘制模式,新添标题绘制模式属性。 4.新添标题偏移度属性。 5.加入圆形进度条控件:ProgressIndicator。 CC2013-9.5.2 1.优化截图控件,截图工具栏加入新功能。 2.解决个人信息卡和天气窗体显示后不会消失的问题。 3.各种细节BUG优化。 CC2013-9.5.1 1.解决贴边左右隐藏的BUG。 2.解决窗体点击事件不能触发的问题。 3.优化SkinButton继承父容器背景色的代码。 4.解决SkinButton异常错误。 CC2013-9.3 1.好友列表右键菜单没反应问题。 2.新增美化控件SkinDatagridview。 3.密码软件盘回删不了文字问题。 4.双击窗体最大化,最大化后再双击恢复原大小,(win7)。 5.部细节调优。 实现功能: 1.界面库中多达25个自定义换肤控件,让每个控件设设属性就能达到你想要的效果,支持图片换肤和色调绘制。 2.四边阴影,毛边效果,可以设置阴影宽度和阴影颜色,支持所有系统。 3.拥有密码键盘输入,防护更贴心。 4.8种圆角窗体模式供你选择,淋漓尽致,润滑如圆。 5.登录主界面后,有登陆提示窗,提示上次登录的城市和时间。 6.皮肤随心变:拖动任意一张图片至主界面,就可以改变皮肤。 7.皮肤色调获取:改变皮肤的同时,将计算图片色调,再将其运用到窗体背景色。 8.皮肤尾部渐变:上下左右方均可实现,渐变皮肤。 9.皮肤拖拉方向:可以选择皮肤在拉伸的时候,粘着哪一边拖拉。 10.GDI+界面重绘,处理消息机制,3种移动模式和拉伸是否启用只需要设置一个属性的事就可以解决。 11.界面渐变闪现和闪退:不再像平凡的突然出现,采用API渐变机制,渐渐出现和消失,win7系统下还有动态缩小至任务的效果。 12.完美好友列表,可添加上千好友,不卡不掉线,还可以拖动好友到其他组。 13.好友悬浮至头像可以查看详细资料卡。 14.窗口可调渐变后透明度:让窗体看起来更像是Vista玻璃窗体风格。 15.聊天窗口可发送图片,大文件,表情,还有震动。 16.按钮控件背景色拥有继承窗体背景主色调的功能,让整体色调保持一致。 17.更是有和如出一辙的扣扣截图。仿真度也达到100%,完美修复所有已知BUG。 18.聊天窗口,可以调字体颜色和字体样式等多项功能。 20.SkinLabel与SkinButton控件字体与窗体标题可以根据背景色暗亮度自动调节字体为黑还是白。 21.MessageBox提示框的美化,并继承调用窗口的色调与背景,MessageBox可所谓已达到帅气的不能再帅气的境界了。 22.天气皮肤自动变,所有窗体根据当地天气自动决定皮肤背景,CC最帅气功能之一。 23.个人资料卡及聊天窗体拥有动态CC秀展示。 24.主界面拖动换肤的同时,所关联的子窗体皮肤也会跟着变。 25.多线程大文件传输功能,支持无上限大文件传输,有进度条显示进程度。 26.界面库已封装了大图取主色调,颜色判断暗亮等多项功能。 27.如果你觉得获取天气让你的登录太慢不想要的话,注释相关调用方法即可快速登录。 界面库交流群:306485590 本人QQ:345015918 注意: Demo版不包括更新,为方便用户查看和使用属性等方法,dll只轻微加密。想反编译的就不要尝试了,里面有上百个类,改错改到你哭。 介意购买正版,永久更新配源码。 看截图或者想购买商业版的用户请访问以下地址: http://www.51aspx.com/code/TotalLikeQQ2013 特权:购买商业版的用户,有权利享有最快的更新服务,第一时间将最新版本的dll源码送到你手上。 使本项目源码或本项目生成的DLL前请仔细阅读以下协议内容,如果你同意以下协议才能使用本项目所有的功能,否则如果你违反了以下协议,有可能陷入法律纠纷和赔偿,作者保留追究法律责任的权利。 1、你可以在开发的软件产品中使用和修改本项目的源码和DLL,但是请保留所有相关的版权信息。 2、不能将本项目源码与作者的其他项目整合作为一个单独的软件售卖给他人使用。 3、不能传播本项目的源码和DLL,包括上传到网上、拷贝给他人等方式。 4、以上协议暂时定制,由于还不完善,作者保留以后修改协议的权利。 时间:2013-7-5 作者: 乔克斯 请保留以上版权信息,否则作者将保留追究法律责任。

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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