发一个自绘菜单DLL库(仅3个函数实现)

Soyokaze 2008-11-26 03:51:00
用于美化现有的菜单。注意是现有的,或者是窗体菜单,或者是弹出菜单什么的。
导出3个函数(标准Win API):
long AssignOwnerDraw(HANDLE hMenu)
long MeasureItem(LPMEASUREITEMSTRUCT lpmis)
long DrawItem(LPDRAWITEMSTRUCT lpdis)

VB里声明:
Private Declare Function AssignOwnerDraw Lib "cutemenu" (ByVal hMenu As Long) As Long
Private Declare Function MeasureItem Lib "cutemenu" (ByVal lpmis As Long) As Long
Private Declare Function DrawItem Lib "cutemenu" (ByVal lpdis As Long) As Long


用法:先调用 AssignOwnerDraw 为菜单设置用户自绘属性,hMenu 为要设置的菜单句柄。这个函数设置此菜单下所有条目和子菜单。
在 WM_MEASUREITEM 消息,调用 MeasureItem,lpmis 为 lParam
在 WM_DRAWITEM 消息,调用 DrawItem, lpdis 为 lParam

菜单内容支持位图(需要用户自行设定)。目前的风格模仿 Firefox Aero 主题。

下载到我的资源里,链接:
http://download.csdn.net/source/811001

VB代码片断(VB使用时需要先窗口子类化,以便处理菜单自绘消息)

Call cMenu.AssignOwnerDraw(GetMenu(Me.hWnd))

'...
Case WM_MEASUREITEM
Call cMenu.MeasureItem(lParam)
Case WM_DRAWITEM
If wParam = 0 Then Call cMenu.DrawItem(lParam)
'...
...全文
70 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxsqs 2008-11-26
  • 打赏
  • 举报
回复
up
android2008 2008-11-26
  • 打赏
  • 举报
回复
up
Soyokaze 2008-11-26
  • 打赏
  • 举报
回复
运行效果:

1,451

社区成员

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

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