LE代码分析(1)--自画菜单(草稿)

主要代码,3个class: cODMenus,ClsSMenu,CCSMenu ,1个次要class:cImageList
作用:

  • cODMenus:自画菜单总处理
  • ClsSMenu:主要处理代码
  • CCSMenu:ClsSMenu集合
  • cImageList:存储菜单图标

结构如下:

cODMenusmCSMenuCols通过菜单项所在菜单
─────────
的Handle区分
CCSMenu通过菜单项
──────
ID或位置区分
ClsSMenu
     
 mIconImgListZZ

通过设置的key区分
 ──────────

cImageList

 mCSMenuCols与mIconImgListZZ都是cODMenus的成员变量,
                                          
        

此动态链接库是专门用于美化程序的菜单的。实现方法是在原有菜单的基础上直接调用,非常方便。库经过长时间的修改,已经很完善了。现在将其发布出来,供大家使用。 【发行文件】 DLL文件:cutemenu.dll LIB文件:cutemenu.lib VC++头文件:cutemenu.h VB声明模块:cutemenu.bas PB包含文件:cutemenu.pbi 帮助文件:help.chm 【特点】 1、内部实现完全依赖已经建立好的菜单,没有另行建立任何结构数组用来保存自绘菜单信息。 2、用户可以自己设置自绘风格(30多项)。支持渐变填充、Alpha混合、32位透明位图菜单项,界面美观。 3、使用方便,仅在适当的时候调用3个函数即可。 4、库文件体积小巧。 【编译器】 PureBasic 4.20 【使用说明】 文件夹“Demo Code”中有 Visual C++ 6.0、Visual Basic 6.0、PureBasic 三种 IDE 环境下的演示代码,用户可根据具体情况选择参考。 使用的具体思路是对已存在的菜单调用 AssignOwnerDraw(HMENU hMenu, UINT fSubIncluded) 函数,该函数会为该菜单的每项设置 MFT_OWNERDRAW 标志。如果 fSubIncluded 不为0,函数会遍历该菜单下挂的所有子菜单的各菜单项。这个函数可以在加载菜单后就调用,也可以在 WM_INITMENU/WM_INITMENUPOPUP 消息中即时调用。之后,在消息循环中的 WM_MEASUREITEM 和 WM_DRAWITEM 消息分别调用 MeasureItem(LPMEASUREITEMSTRUCT lpmis) 和 DrawItem(LPDRAWITEMSTRUCT lpdis) 实现自绘。 链接库刚运行时的菜单风格是当前系统默认的,用户可以凭借库里提供的另两个功能强大的函数 GetMenuStyle(LPMENUSTYLE lpms) 和 SetMenuStyle(LPMENUSTYLE lpms) 实现项目颇为丰富(30多项)的菜单风格设置。恰当地设置各参数,可以逼真地模仿别的软件的菜单风格,也可以随心所欲地实现自己独特的风格。 各函数的调用和其它一些技术问题请参阅目录下的帮助文档。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值