首页 > 开发 > 综合 > 正文

一种简单方便的用户权限管理方法--使用菜单来管理用户权限(下)

2024-07-21 02:09:25
字体:
来源:转载
供稿:网友

商业源码热门下载www.html.org.cn


   问题有点棘手,于是想到去msdn上查看有哪些可以用的关于的菜单消息,我找到了两
wm_menuchar,wm_menuselect,wm_menuchar是用来判断当有菜单项被选中时,接收到了来自键盘的按键的时候触发,wm_menuselect是在菜单项选中时触发,于是我试了两个消息。发现在映射到wm_menuselect的用户自定义事件中用keydown判断用户是否按下键根本没用,现在大家明白了,wm_menuchar就是解决问题的关键所在。

wm_menuchar消息是在当用户选中了某个菜单项时(任一个),只是只要按下键盘上的任一个有效键,通过消息上的char可以看出来,就可以触发该事件了,这样。我可以在选中某个菜单项的时候,在出来这个消息的事件里让这个菜单项的checked属性变化,这样就可以让菜单保持展开状态,实现复选了。


在菜单所在窗口中定义一个用户事件,映射到系统消息pbm_menuchar 叫us_menuchar
在这个事件里写
int li_upper
li_upper=upperbound(mycurmenu.item)
if keydown(keyd!)  and li_upper= 0 then //判断d键是否按下和是否还有下一级菜单,但是在这里keydown判断不了是否鼠标右键被按下,是因为这个消息只取键盘按键按下与否的信息。
 mycurmenu.checked=not mycurmenu.checked
 mycurmenu.enabled=not mycurmenu.enabled
 mycurmenu.enabled=not mycurmenu.enabled
end if

mycurmenu是个全局变量,用来存放当前用户选中的菜单项,当然这需要在每个菜单项的selected事件里加上一句
mycurmenu =this
来获得当前高亮显示的菜单。

当然你也可以用api从wm_menuchar消息带来的菜单句炳等去判断是哪个菜单项按下,我试了,没成功。大家可以自己试!

大致的编码就这么多,比较简单,但是没能实现用鼠标右键点选权限,只能用键盘来控制,还是有那么一点不方便。但是感觉还是比较方便实用的,欢迎大家斧正!谢谢!

(完)


 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表