欢迎光临
我们一直在努力

一种简单方便的用户权限管理方法–使用菜单来管理用户权限(下)-数据库专栏,SQL Server

建站超值云服务器,限时71元/月

   问题有点棘手,于是想到去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消息带来的菜单句炳等去判断是哪个菜单项按下,我试了,没成功。大家可以自己试!

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

(完)

 

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 一种简单方便的用户权限管理方法–使用菜单来管理用户权限(下)-数据库专栏,SQL Server
分享到: 更多 (0)