中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 数据库开发 > 数据库综合
一种简单方便的用户权限管理方法--使用菜单来管理用户权限(下)
作者:未知 时间:2001-08-02 12:12 出处:Blog 责编:chinaitpower
              摘要:暂无

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

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

(完)


 

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有