C# WM_COMMAND

Pipi0714 2009-06-16 03:56:20
要做一个权限管理的模块,需要控件菜单每个子菜单的点击事件。类似C++的处理方法:

在一个函数截获WM_COMMAND(WindowProc中C++)处理但是C#中的
protected override void WndProc(ref Message m)不能截获WM_COMMAND,或者换句话说不知道那个函数可以截获菜单的点击事件注意这里是窗体的所有子菜单


请问:有什么好方法!!!!!
...全文
226 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Pipi0714 2009-06-17
  • 打赏
  • 举报
回复
ding
Pipi0714 2009-06-17
  • 打赏
  • 举报
回复
ChrisAK 2009-06-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Pipi0714 的回复:]
1楼说的可以实现但是不如我说的那么处理的好(得重新分发)。

要是有过滤消息函数,只需是否继续执行(调用原始事件函数即可)

自己添加了处理的函数
[/Quote]这样啊...那就比较麻烦了.C#的大部分控件是重写了原有控件的消
息处理函数来实现事件的;所以很多都不往主窗体发消息(比如Button).
不过菜单倒是还是由WM_COMMAND实现的,在WndProc里也能拦截下来.但
是仅限于标准的Windows菜单(对应System.Form.MainMenu).而烦人地
方在于.net2.0以后添加了MenuStrip来代替老式的Menu.至于它是怎么
实现的,处理了哪些消息就不太清楚了.如果你想在WM_COMMAND里处理菜单
的话.就改用老式的Menu类来做菜单吧.或者你也可以反编译.net类库看下
它的消息是怎么处理的:)
Pipi0714 2009-06-16
  • 打赏
  • 举报
回复
完蛋了,高手回家了!!!!!!
Pipi0714 2009-06-16
  • 打赏
  • 举报
回复
顶!!!!!
Pipi0714 2009-06-16
  • 打赏
  • 举报
回复
1楼说的可以实现但是不如我说的那么处理的好(得重新分发)。

要是有过滤消息函数,只需是否继续执行(调用原始事件函数即可)

自己添加了处理的函数
ChrisAK 2009-06-16
  • 打赏
  • 举报
回复
这个...
你直接把所有菜单的响应函数设置成一样的不就行了么?
干嘛还重写消息处理函数...

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧