易语言菜单圆形复选样式源码
系统结构:hook,Unhook,WindowProc,CreateMenu,复选菜单_,使用符号选中_,创建空白弹出式菜单_,清除菜单_,取鼠标位置_,改变菜单条目_,插入菜单条目_,取条目数量_,取条目ID_,取条目字串_,设置窗口信息_,删除菜单_,呼叫窗口函数地址_,取系统菜单句柄_,取得窗口信息_,弹出轨迹菜单_,添加菜单项_,
======程序集1
| |
| |------ hook
| |
| |------ Unhook
| |
| |------ WindowProc
| |
| |------ CreateMenu
| |
| |
======窗口程序集1
| |
| |------ __启动窗口_创建完毕
| |
| |------ __启动窗口_鼠标右键被放开
| |
| |------ __启动窗口_鼠标左键被放开
| |
| |------ __启动窗口_将被销毁
| |
| |
======调用的Dll
| |
| |---[dll]------ 复选菜单_
| |
| |---[dll]------ 使用符号选中_
| |
| |---[dll]------ 创建空白弹出式菜单_
| |
| |---[dll]------ 清除菜单_
| |
| |---[dll]------ 取鼠标位置_
| |
| |---[dll]------ 改变菜单条目_
| |
| |---[dll]------ 插入菜单条目_
| |
| |---[dll]------ 取条目数量_
| |
| |---[dll]------ 取条目ID_
| |
| |---[dll]------ 取条目字串_
| |
| |---[dll]------ 设置窗口信息_
| |
| |---[dll]------ 删除菜单_
| |
| |---[dll]------ 呼叫窗口函数地址_
| |
| |---[dll]------ 取系统菜单句柄_
| |
| |---[dll]------ 取得窗口信息_
| |
| |---[dll]------ 弹出轨迹菜单_
| |
| |---[dll]------ 添加菜单项_
调用的DLL命令:
.DLL命令 复选菜单_, 整数型, "user32.dll", "CheckMenuItem"
.参数 菜单句柄, 整数型, , hMenu,菜单句柄
.参数 菜单标识, 整数型, , wIDCheckItem,菜单条目的标识符
.参数 参数, 整数型, , wCheck,根据参数而定
.DLL命令 使用符号选中_, 整数型, "user32.dll", "CheckMenuRadioItem", , 非零表示成功,零表示失败。会设置GetLastError
.参数 菜单句柄, 整数型, , hMenu,菜单句柄
.参数 起始位置, 整数型, , un1,组内第一个位置或菜单ID
.参数 结束位置, 整数型, , un2,组内最后一个位置或菜单ID
.参数 选中位置, 整数型, , un3,欲复选的位置或菜单ID
.参数 参数, 整数型, , un4,指定un1、un2、un3、使用的是菜单ID或位置
.DLL命令 创建空白弹出式菜单_, 整数型, "user32.dll", "CreatePopupMenu"
.DLL命令 清除菜单_, 整数型, "user32.dll", "DestroyMenu"
.参数 预删除的菜单, 整数型, , hMenu,欲删除菜单的句柄
.DLL命令 取鼠标位置_, 整数型, "user32", "GetCursorPos"
.参数 位置, 坐标_
.DLL命令 改变菜单条目_, 整数型, "user32.dll", "ModifyMenuA"
.参数 菜单句柄, 整数型, , hMenu,菜单句柄
.参数 标识符, 整数型, , nPosition,欲改变的菜单条目的标识符
.参数 常数标志, 整数型, , wFlags,一系列常数标志的组合
.参数 新命令ID, 整数型, , wIDNewItem,指定菜单条目的新命令ID
.参数 标志, , , any,位图句柄或菜单文本
.DLL命令 插入菜单条目_, 整数型, "user32.dll", "InsertMenuA"
.参数 菜单句柄, 整数型, , hMenu,菜单的句柄
.参数 插入点标志符, 整数型, , nPosition,参见相关帮助
.参数 常数标志, 整数型, , wFlags,常数标志的组合,参考ModifyMenu
.参数 新条目ID, 整数型, , wIDNewItem,指定菜单条目的新菜单ID
.参数 条目内容, , , lpNewItem,由wFlags参数决定
.DLL命令 取条目数量_, 整数型, "user32", "GetMenuItemCount"
.参数 菜单句柄, 整数型
.DLL命令 取条目ID_, 整数型, "user32", "GetMenuItemID"
.参数 菜单句柄, 整数型
.参数 位置, 整数型
.DLL命令 取条目字串_, 整数型, "user32", "GetMenuStringA"
.参数 菜单句柄, 整数型
.参数 条目位置, 整数型
.参数 缓冲区, 文本型
.参数 缓冲区长度, 整数型
.参数 标志, 整数型
.DLL命令 设置窗口信息_, 整数型, "user32", "SetWindowLongA", , 在窗口结构中为指定的窗口设置信息 指定数据的前一个值
.参数 窗口句柄, 整数型, , hwnd,欲为其取得信息的窗口的句柄
.参数 窗口信息值, 整数型, , nIndex,请参考GetWindowLong函数的nIndex参数的说明
.参数 窗口信息新值, 整数型, , dwNewLong,由nIndex指定的窗口信息的新值
.DLL命令 删除菜单_, 整数型, "user32", "RemoveMenu", , RemoveMenu,非零表示成功,零表示失败。会设置GetLastError
.参数 菜单句柄, 整数型, , hmenu,菜单的句柄
.参数 标识符, 整数型, , nPosition,欲改变的菜单条目的标识符。如在wFlags参数中指定了MF_BYCOMMAND,这个参数就代表欲改变的菜单条目的命令ID。如设置的是MF_BYPOSITION,这个参数就代表菜单条目在菜单中的位置(第一个条目的位置为零)
.参数 标识符类型, 整数型, , wflags,常数MF_BYCOMMAND或MF_BYPOSITION,取决于nPosition参数
.DLL命令 呼叫窗口函数地址_, 整数型, "user32.dll", "CallWindowProcA"
.参数 前一窗口函数地址, 整数型
.参数 窗口句柄, 整数型
.参数 消息值, 整数型
.参数 附加参数1, 整数型
.参数 附加参数2, 整数型
.DLL命令 取系统菜单句柄_, 整数型, "user32", "GetSystemMenu", , 取得指定窗口的系统菜单的句柄。在vb环境,“系统菜单”的正式名称为“控制菜单”,即单击窗口左上角的控制框时出现的菜单 如执行成功,返回系统菜单的句柄;零意味着出错。如bRevert设为TRUE,也会返回零(简单的恢复原始的系统菜单)
.参数 窗口句柄, 整数型, , 窗口的句柄
.参数 回复, 整数型, , 如设为TRUE,表示接收原始的系统菜单;
.DLL命令 取得窗口信息_, 整数型, "user32", "GetWindowLongA", , 从指定窗口的结构中取得信息 由nIndex决定。零表示出错。会设置GetLastError
.参数 窗口句柄, 整数型, , 欲为其获取信息的窗口的句柄
.参数 属性, 整数型, , 欲取回的信息,可以是下述任何一个常数:;GWL_EXSTYLE:扩展窗口样式;GWL_STYLE:窗口样式;GWL_WNDPROC:该窗口的窗口函数的地址;GWL_HINSTANCE:拥有窗口的实例的句柄;GWL_HWNDPARENT:该窗口之父的句柄。不要用SetWindowWord来改变这个值;GWL_ID:对话框中一个子窗口的标识符;GWL_USERDATA:含义由应用程序规定;DWL_DLGPROC:这个窗口的对话框函数地址;DWL_MSGRESULT:在对话框函数中处理的一条消息返回的值;DWL_USER:含义由应用程序规定;
.DLL命令 弹出轨迹菜单_, 整数型, "user32.dll", "TrackPopupMenu", , 在屏幕的任意地方显示一个弹出式菜单
.参数 菜单句柄, 整数型, , 弹出式菜单的句柄
.参数 标志, 整数型, , 位置标志和鼠标追踪标志的组合,见下表
.参数 横坐标, 整数型, , 这个点指定了弹出式菜单在屏幕坐标系统中的位置
.参数 纵坐标, 整数型, , 这个点指定了弹出式菜单在屏幕坐标系统中的位置
.参数 保留参数, 整数型, , 未使用,设为零
.参数 窗口句柄, 整数型, , 用于接收弹出式菜单命令的窗口的句柄。应该使用窗体的窗口句柄——窗体中有一个菜单能象弹出式菜单那样接收相同的命令ID集
.参数 矩形结构, , , 用屏幕坐标定义的一个矩形,如用户在这个矩形的范围内单击,则弹出式菜单不会关闭。如单击弹出式菜单之外的任何一个地方,则会关闭菜单。可以设为NULL
.DLL命令 添加菜单项_, 整数型, "user32.dll", "AppendMenuA", , 非零表示成功,零表示失败
.参数 菜单句柄, 整数型, , hMenu,菜单句柄
.参数 菜单常数标志, 整数型, , wFlags,参见相关帮助
.参数 新菜单条目ID, 整数型, , wIDNewItem,指定菜单条目的新命令ID
.参数 标志值, 文本型, , lpNewItem,参见相关帮助