菜单支持库
创建窗口菜单
需要先调用 import win.ui.menu,不然发布后会报错。
开发环境下运行,为了加快启动速度,不会百分百排除所有没有引用的库
句柄到菜单对象映射表
查找菜单对象
win.ui.menu.onDrawItem = function(drawItem,dpiScaleX,dpiScaleY){
return 1;
}
win.ui.menu.onMeasureItem = function(measureItem,dpiScaleX,dpiScaleY){
measureItem.itemWidth = 80;
measureItem.itemHeight = ::GetSystemMetrics(0xF/*_SM_CYMENU*/);
}
添加菜单项。
添加分隔线
menuObject.add(
text = "标题";
bitmap = "位图句柄或路径、或图像数据,可选参数";
bitmapCheckd = "选中位图句柄或路径、或图像数据,可选参数";
proc = function(id){
/*点击菜单项的回调函数,
注意添加菜单项以后 add 函数返回菜单命令ID*/
};
id = 可选参数;
flag = 可选参数;
);
menuObject.add("菜单标题",function(){
/*指定点击菜单项的回调函数。
参数 @flags 可选用 _MF_ 前缀的常量自定义选项。
可选用 @commandId 参数自定义命令 ID,不指定则自动注册空闲命令 ID。
添加菜单项以后 add 方法返回注册的菜单项命令 ID*/
})
添加菜单项。
参数 @title 指定菜单项文本。
参数 @commandId 指定绑定的命令 ID,不会触发默认回调函数 onMenuItemClick 。
添加 @subMenu 参数指定的子菜单。
@title 参数指定菜单项文本。
返回添加的子菜单
menuObject.addTable( {
{ "菜单文本"; function(id){
/*菜单事件回调函数*/
} }; { /*分隔线*/ }
{ "退出程序"; function(id){
winform.close()
} };
} )
勾选或取消勾选菜单项
勾选或取消勾选菜单项,参数@2默认为 true,
如果参数@3为0/*_MF_BYCOMMAND*/则参数@1为菜单命令ID
勾选或取消勾选菜单项,参数@2默认为 true
返回菜单项是否选中状态
返回菜单项是否选中状态e,
如果参数@2为0/*_MF_BYCOMMAND*/则参数@1为菜单命令ID
返回菜单项是否选中状态
模拟点击指定命令ID的菜单项
模拟点击指定位置菜单项
关闭菜单
返回菜单子项数目
删除指定位置菜单项
移除指定命令ID的菜单项
被移除的如果是子菜单则销毁,不可重用
删除指定位置菜单项
被移除的如果是子菜单则销毁,不可重用
启用或禁用菜单项
启用或禁用菜单项,参数@2默认为 true,
如果参数@3为0/*_MF_BYCOMMAND*/则参数@1为菜单命令ID
启用或禁用菜单项,参数@2默认为 true
根据指定位置序号返回菜单项的命令ID
根据指定位置序号返回菜单项的命令ID
根据菜单项的命令ID返回菜单位置序号
根据菜单项的命令ID返回菜单位置序号
返回菜单项文本
返回菜单项文本,
如果参数@2为0/*_MF_BYCOMMAND*/则参数@1为菜单命令ID
返回菜单项文本
菜单句柄
在指定位置插入菜单项。
menuObject.insert(
position = 1;
text = "标题";
bitmap = "位图句柄或路径、或图像数据,可选参数";
bitmapCheckd = "选中位图句柄或路径、或图像数据,可选参数";
proc = function(id){
/*点击菜单项的回调函数,
注意添加菜单项以后 add 函数返回菜单命令ID*/
};
id = 可选参数;
flag = 可选参数;
);
在指定位置插入分隔线。
@position 用数值指定位置序号。
menuObject.insert(1,"菜单标题",function(){
/*指定点击菜单项的回调函数。
参数 @flags 可选用 _MF_ 前缀的常量自定义选项。
可选用 @commandId 参数自定义命令 ID,不指定则自动注册空闲命令 ID。
添加菜单项以后 add 方法返回注册的菜单项命令 ID*/
})
在指定位置插入菜单项。
参数 @position 用数值指定位置序号。
参数 @title 指定菜单项文本。
参数 @commandId 指定绑定的命令 ID,不会触发默认回调函数 onMenuItemClick 。
在指定位置插入 @subMenu 参数指定的子菜单。
@title 参数指定菜单项文本。
返回添加的子菜单
menuObject.onMenuItemClick = function(id){
/*默认的菜单回调函数。
如果添加菜单项时,回调函数指定为 null 则默认调用此函数。
如果回调函数指定为命令 ID 则不触发此默认回调。*/
}
启用自绘
系统菜单自绘没多大意义,建议使用弹出窗口模拟菜单即可
重绘菜单
移除指定位置菜单项
移除指定命令ID的菜单项
被移除的如果是子菜单并不销毁,可重用
移除指定位置菜单项
被移除的如果是子菜单并不销毁,可重用
重设菜单回调函数
重设菜单回调函数
重设菜单回调函数
获取或修改当前选中项命令ID,单选模式
获取或修改当前选中项索引,单选模式
获取或修改当前选中项文本,单选模式
设置菜单项位图
设置菜单项位图,
选中位图为可选参数,
图像可以是句柄指针,也可以是图像文件路径或数据,
如果参数@4为0/*_MF_BYCOMMAND*/则参数@1为菜单命令ID
设置菜单项位图,
选中位图为可选参数,
图像可以是句柄指针,也可以是图像文件路径或数据
设置菜单项文本
设置菜单项文本,
如果参数@3为0/*_MF_BYCOMMAND*/则参数@1为菜单命令ID
设置菜单项文本
返回指定位置子菜单
添加菜单项。
添加分隔线
popmenuObject.add(
text = "标题";
bitmap = "位图句柄或路径、或图像数据,可选参数";
bitmapCheckd = "选中位图句柄或路径、或图像数据,可选参数";
proc = function(id){
/*点击菜单项的回调函数,
注意添加菜单项以后 add 函数返回菜单命令ID*/
};
id = 可选参数;
flag = 可选参数;
);
popmenuObject.add("菜单标题",function(){
/*指定点击菜单项的回调函数。
参数 @flags 可选用 _MF_ 前缀的常量自定义选项。
可选用 @commandId 参数自定义命令 ID,不指定则自动注册空闲命令 ID。
添加菜单项以后 add 方法返回注册的菜单项命令 ID*/
})
添加菜单项。
参数 @title 指定菜单项文本。
参数 @commandId 指定绑定的命令 ID,不会触发默认回调函数 onMenuItemClick 。
可通过 popId 方法获取用户点选找菜单项 ID。
添加 @subMenu 参数指定的子菜单。
@title 参数指定菜单项文本。
返回添加的子菜单
popmenuObject.addTable( {
{ "菜单文本"; function(id){
/*菜单事件回调函数*/
} }; { /*分隔线*/ }
{ "退出程序"; function(id){
winform.close()
} };
} )
勾选或取消勾选菜单项
勾选或取消勾选菜单项,参数@2默认为 true,
如果参数@3为0/*_MF_BYCOMMAND*/则参数@1为菜单命令ID
勾选或取消勾选菜单项,参数@2默认为 true
返回菜单项是否选中状态
返回菜单项是否选中状态e,
如果参数@2为0/*_MF_BYCOMMAND*/则参数@1为菜单命令ID
返回菜单项是否选中状态
模拟点击指定命令ID的菜单项
模拟点击指定位置菜单项
关闭菜单
返回菜单子项数目
删除指定位置菜单项
移除指定命令ID的菜单项
被移除的如果是子菜单则销毁,不可重用
删除指定位置菜单项
被移除的如果是子菜单则销毁,不可重用
启用或禁用菜单项
启用或禁用菜单项,参数@2默认为 true,
如果参数@3为0/*_MF_BYCOMMAND*/则参数@1为菜单命令ID
启用或禁用菜单项,参数@2默认为 true
调用 @commandId 指定的菜单项命令 ID 绑定的回调函数。
可选指定接收命令的父窗体句柄。
可添加任意个附加参数(转发给菜单项回调函数)。
根据指定位置序号返回菜单项的命令ID
根据指定位置序号返回菜单项的命令ID
根据菜单项的命令ID返回菜单位置序号
根据菜单项的命令ID返回菜单位置序号
返回菜单项文本
返回菜单项文本,
如果参数@2为0/*_MF_BYCOMMAND*/则参数@1为菜单命令ID
返回菜单项文本
菜单句柄
在指定位置插入菜单项。
popmenuObject.insert(
position = 1;
text = "标题";
bitmap = "位图句柄或路径、或图像数据,可选参数";
bitmapCheckd = "选中位图句柄或路径、或图像数据,可选参数";
proc = function(id){
/*点击菜单项的回调函数,
注意添加菜单项以后 add 函数返回菜单命令ID*/
};
id = 可选参数;
flag = 可选参数;
);
在指定位置插入分隔线。
@position 用数值指定位置序号。
popmenuObject.insert(1,"菜单标题",function(){
/*指定点击菜单项的回调函数。
参数 @flags 可选用 _MF_ 前缀的常量自定义选项。
可选用 @commandId 参数自定义命令 ID,不指定则自动注册空闲命令 ID。
添加菜单项以后 add 方法返回注册的菜单项命令 ID*/
})
在指定位置插入菜单项。
参数 @position 用数值指定位置序号。
参数 @title 指定菜单项文本。
参数 @commandId 指定绑定的命令 ID,不会触发默认回调函数 onMenuItemClick 。
在指定位置插入 @subMenu 参数指定的子菜单。
@title 参数指定菜单项文本。
返回添加的子菜单
popmenuObject.onMenuItemClick = function(id){
/*默认的菜单回调函数。
如果添加菜单项时,回调函数指定为 null 则默认调用此函数。
如果回调函数指定为命令 ID 则不触发此默认回调。*/
}
启用自绘
系统菜单自绘没多大意义,建议使用弹出窗口模拟菜单即可
弹出菜单并返回用户点选的菜单项命令 ID。
此方法仅返回命令 ID,不会自动触发命令 ID 绑定的回调函数。
可用返回值作为参数调用 fireId 方法触发相应的回调函数。
弹出菜单。
并返回用户点选菜单项的命令 ID,不会自动触发菜单项绑定的回调函数。
未选择或发生错误则返回零。弹出菜单。
如果不指定坐标,则自动获取鼠标当前位置。
参数 @3 指定参数 @1,@2 是否为屏幕坐标,默认为 false。
一般不需要指定坐标参数,由函数自动设定即可。
可选用参数 @4 指定 TPM 前缀的选项,
例如 _TPM_BOTTOMALIGN 指定坐标 y 指定菜单底部位置。
弹出菜单并自动触发菜单项绑定的回调函数。
成功返回 true,失败返回 false。
此函数不会返回触发菜单项绑定的命令 ID,
改用 popId 方法可返回命令 ID 而不会自动触发回调。
弹出菜单。
如果不指定坐标,则自动获取鼠标当前位置。
参数 @3 指定参数 @1,@2 是否为屏幕坐标,默认为 false。
一般不需要指定坐标参数,由函数自动设定即可。
可选用参数 @4 指定 TPM 前缀的选项,
例如 _TPM_BOTTOMALIGN 指定坐标 y 指定菜单底部位置
移除指定位置菜单项
移除指定命令ID的菜单项
被移除的如果是子菜单并不销毁,可重用
移除指定位置菜单项
被移除的如果是子菜单并不销毁,可重用
重设菜单回调函数
重设菜单回调函数
重设菜单回调函数
获取或修改当前选中项命令ID,单选模式
获取或修改当前选中项索引,单选模式
获取或修改当前选中项文本,单选模式
设置菜单项位图
设置菜单项位图,
选中位图为可选参数,
图像可以是句柄指针,也可以是图像文件路径或数据,
如果参数 @4 为 0/*_MF_BYCOMMAND*/
则参数 @1 为菜单命令 ID
设置菜单项位图,
选中位图为可选参数,
图像可以是句柄指针,也可以是图像文件路径或数据
设置菜单项文本
设置菜单项文本,
如果参数@3为0/*_MF_BYCOMMAND*/则参数@1为菜单命令ID
设置菜单项文本
返回指定位置子菜单
返回窗口菜单
参数@1可指定窗体对象或窗体句柄
返回的菜单对象不能添加菜单
返回系统菜单
参数@1可指定窗体对象或窗体句柄
请事先导入win.ui.menu
返回系统菜单
并重置为缺省状态
参数@1可指定窗体对象或窗体句柄
请事先导入win.ui.menu
创建窗口菜单
参数 @1 可指定窗口或控件对象,
如果参数 @1 指定控件对象则自动转换为所在的父窗口对象。
如果参数 @1 传入窗口句柄,则添加菜单项无效
使用存在的菜单句柄创建菜单对象,
如果参数 @1 指定控件对象则自动转换为所在的父窗口对象。
如果参数 @1 传入窗口句柄,则添加菜单项无效
创建弹出菜单
需要先调用 import win.ui.menu,不然发布后会报错。
开发环境下运行,为了加快启动速度,不会百分百排除所有没有引用的库
创建弹出菜单,
如果参数 @1 指定控件对象则自动转换为所在的父窗口对象。
如果参数 @1 传入窗口句柄,则添加菜单项无效
使用存在的菜单句柄创建弹出菜单对象,
如果参数 @1 指定控件对象则自动转换为所在的父窗口对象。
如果参数 @1 传入窗口句柄,则添加菜单项无效
_MENU_ITEM_IS_SUBMENU=-1
_TPM_BOTTOMALIGN=0x20
_TPM_CENTERALIGN=0x4
_TPM_LEFTALIGN=0
_TPM_RIGHTALIGN=0x8
_TPM_TOPALIGN=0
_TPM_VCENTERALIGN=0x10