自绘的菜单大家不陌生吧?但是自绘的菜单一般都是英文(看不懂……),So,我干脆用Ex模块写了个自绘的菜单,虽然使用了部分英文,但是加入了大量的注释(精确到行)
窗口程序集名 | 保 留 | 保 留 | 备 注 | 窗口程序集_启动窗口 | | | | 变量名 | 类 型 | 数组 | 备 注 | 指针 | 整数型 | | 菜单对钩 | 整数型 | | 菜单格式 | Gdip_文本格式 | | Ex_DirectUI | Ex_DirectUI | |
Ex_DirectUI. 挂接皮肤 (取窗口句柄 (), , RGB2ARGB ( #白色 ), , , , , , , , , , , ) Ex_DirectUI. 事件_挂接消息 (&消息处理 ) |
消息处理 | 整数型 | | |
hWnd | 整数型 | | | | Msg | 整数型 | | | | wParam | 整数型 | | | | lParam | 整数型 | | | | 判断 (Msg = 279 ) 初始菜单 (wParam, 真) 判断 (Msg = 44 ) 如果真 (wParam = 0 ) 修改菜单大小 (lParam )返回 (1 )判断 (Msg = 43 ) 如果真 (wParam = 0 ) 自绘菜单 (lParam )返回 (1 )返回 (-1)
首先创建完毕,先Set一下窗口信息回调
变量名 | 类 型 | 静态 | 数组 | 备 注 | i | | | | a | MENUITEMINFO | | | 计次循环首 (GetMenuItemCount (参_子菜单 ), i )a.结构大小 = 44 a.标识符 = 位或 (1, 2, 64 ) GetMenuItemInfo (参_子菜单, i - 1, 真, a ) 如果真 (a.条目状态 = 3 且 a.条目ID > 0 且 参_本菜单 = 假)a.条目状态 = 1 ModifyMenu (参_子菜单, i - 1, 位或 (1024, 256), a.条目ID, a.条目状态) 计次循环尾 ()
开始初始化菜单
变量名 | 类 型 | 静态 | 数组 | 备 注 | miss | MEASUREITEMSTRUCT | | | CopyMemory_mis (miss, lparam, 24 ) 写到内存 (190, lparam + 12, ) 写到内存 (选择 (miss.itemData = 3, 7, 25 ), lparam + 16, )
修改菜单大小
注意注意!!自绘的核心来了!!
变量名 | 类 型 | 静态 | 数组 | 备 注 | dis | DRAWITEMSTRUCT | | | mGraphics | | | | colour | | | | 菜单文本 | 文本型 | | | CopyMemory_dis (dis, lParam, 48 ) GdipCreateFromHDC (dis.hdc, mGraphics ) 图形_填充_矩形 (mGraphics, MakeR*F0, dis.rcItem.top, dis.rcItem.right + 2, 选择 (dis.itemData = 3, 8, 26 )), RGB2ARGB (选择 (dis.itemData = 3 或 dis.itemData = 1 或 dis.itemState = 256, #白色, 16023874 )) ) 判断 (dis.itemData = 3 ) 图形_画直线 (mGraphics, RGB2ARGB (15329769 ), 0, dis.rcItem.top + 2, dis.rcItem.right + 2, dis.rcItem.top + 2 ) 判断 (dis.itemData = 1 ) colour = #浅灰 colour = 选择 (dis.itemState = 256, #深灰, #白色 ) 如果真 (dis.itemData = 8 或 dis.itemData = 9 )图形_绘图缩放在 (mGraphics, 菜单对钩, MakeR*F13, dis.rcItem.top + 7, 10, 8 ), MakeR* F选择 (dis.itemState = 256, 0, 10 ), 0, 10, 8 )) 菜单文本 = 取空白文本 (256)GetMenuString (dis.hwndItem, dis.itemID, 菜单文本, 256, 0 ) 如果真 (菜单文本 = “” 且 dis.itemID = 0 ) 菜单文本 = 子文本替换 (菜单文本, “&”, “”, , 1, 真) 如果真 (dis.itemID = 113 )判断 (dis.rcItem.top = 0 或 dis.rcItem.top = 132 ) 图形_画文本 (mGraphics, MakeR*F36, dis.rcItem.top + 6, dis.rcItem.right - 40, 16), A2W (菜单文本), 全局_默认字体, RGB2ARGB (colour), 菜单格式.取指针 ()) GdipDeleteGraphics (mGraphics)
注释量是不是特别的多?
看看效果:
本程序代码虽说少(但是短小精悍),作用还是可以的(主要是好看),开发Ex自绘的小伙伴可以看看!!
源码回复下载!!
感谢您的支持!(好评打赏走一波~!)
自绘菜单.zip
(497.32 KB, 下载次数: 146)
|