关于WM_ENTERIDLE消息的问题

星际空间 2011-08-04 09:23:25
加精
我再spy++中查看notepad的右键弹出菜单消息时,发现有WM_ENTERIDLE
WM_ENTERIDLE fuSource:MSGF_MENU hwnd:000705B6
1.

msdn上说:

WM_ENTERIDLE消息的wParam表示:指名消息是否是正在被显示的对话框或菜单进入空闲状态的结果,它是下列值中的一个:
MSGF_DIALOGBOX:因为对话框正被显示,系统正空闲。
MSGF_MENU:因为菜单正被显示,系统正空闲。
lParam参数表示:如果wParam为MSGF_DIALOGBOX,则为含有对话框的句柄;如果wParam为MSGF_MENU,则为包含正被显示菜单的窗口的句柄。


按照这个理解hwnd:000705B6应该是notepad的那个edit的句柄,但是spy++里查看那个edit句柄并不是000705B6
这个消息的hwnd:000705B6到底是谁的句柄呢?

2.
还有就是如何才能得到右键弹出的那个菜单的句柄呢?

有经验的讨论讨论啊!
...全文
1596 60 打赏 收藏 转发到动态 举报
写回复
用AI写文章
60 条回复
切换为时间正序
请发表友善的回复…
发表回复
budongsayyoume 2012-04-10
  • 打赏
  • 举报
回复
win32 menu 左右键移动 没看到这个消息
djy443fx13 2011-10-02
  • 打赏
  • 举报
回复
学习了,顺便混分
星际空间 2011-08-11
  • 打赏
  • 举报
回复
感谢大家的讨论啦!

分没多少,大家见谅! 重在讨论 呵呵!
星际空间 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 54 楼 mao6798 的回复:]
没分了 过来取点
[/Quote]

没分了,也不能给你啊
星际空间 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 53 楼 gjc550 的回复:]
酱油,是一种生活态度。。
[/Quote]

生活态度真不错
gjc550 2011-08-10
  • 打赏
  • 举报
回复
酱油,是一种生活态度。。
mao6798 2011-08-10
  • 打赏
  • 举报
回复
没分了 过来取点
JackyCBN 2011-08-09
  • 打赏
  • 举报
回复
顶一下 ,感谢楼主
jianqiu3 2011-08-09
  • 打赏
  • 举报
回复
帮顶 ,没分了
星际空间 2011-08-08
  • 打赏
  • 举报
回复
[Quote=引用 46 楼 jiangsheng 的回复:]
看错了,看成了WM_KICKIDLE了……

这个文档里面说消息参数菜单的所有者,这个所有者是TrackPopupMenu的参数,不可能是Edit,因为Edit不会处理WM_COMMAND。应该是框架的窗口句柄。

菜单句柄可以在WM_INITMENUPOPUP这里抓
[/Quote]
记事本点击右键的时候没有WM_INITMENUPOPUP,后来只能通过WM_MENUSELECT消息获得菜单句柄了

你说WM_ENTERIDLE的句柄参数是框架的句柄,spy++看记事本只有edit和notepad两个控件啊,而且这个消息的句柄参数每次右击鼠标时都是不一样的。
gwemail2003 2011-08-08
  • 打赏
  • 举报
回复
学习了。。。
zmlmf11 2011-08-07
  • 打赏
  • 举报
回复
welcome to discuss
蒋晟 2011-08-07
  • 打赏
  • 举报
回复
看错了,看成了WM_KICKIDLE了……

这个文档里面说消息参数菜单的所有者,这个所有者是TrackPopupMenu的参数,不可能是Edit,因为Edit不会处理WM_COMMAND。应该是框架的窗口句柄。

菜单句柄可以在WM_INITMENUPOPUP这里抓
lw973319 2011-08-07
  • 打赏
  • 举报
回复
学习了,谢谢
liulanghan_laodu 2011-08-06
  • 打赏
  • 举报
回复
混口饭吃而已,
lan275465487 2011-08-06
  • 打赏
  • 举报
回复
能混到粉也不错啊。、
jessie4736 2011-08-06
  • 打赏
  • 举报
回复
学习了~~~
crjwlaq 2011-08-06
  • 打赏
  • 举报
回复
[Quote=引用 41 楼 crjwlaq 的回复:]

引用 36 楼 jiangsheng 的回复:

WM_ENTERIDLE是MFC定义的消息,不属于Windows的一部分。


我认为属于 windows消息
摘自 msdn

Remarks
You can suppress the WM_ENTERIDLE message for a dialog box by creating the dialog box with ……
[/Quote]
crjwlaq 2011-08-06
  • 打赏
  • 举报
回复
[Quote=引用 36 楼 jiangsheng 的回复:]

WM_ENTERIDLE是MFC定义的消息,不属于Windows的一部分。
[/Quote]

我认为属于 windows消失
摘自 msdn

Remarks
You can suppress the WM_ENTERIDLE message for a dialog box by creating the dialog box with the DS_NOIDLEMSG style.

Requirements
Windows NT/2000/XP: Included in Windows NT 3.1 and later.
Windows 95/98/Me: Included in Windows 95 and later.
Header: Declared in Winuser.h; include Windows.h.
crjwlaq 2011-08-06
  • 打赏
  • 举报
回复
SHGetMenu 是哪儿的? msdn中木有找到
加载更多回复(34)
MsgInfo V1.00(一)、说明一个用来察看当前进程中消息的控件,D6环境编译。(二)、属性1、ShowType: MSGHex: 是否显示消息ID(16进制) MSGDec: 是否显示消息ID(10进制) MSGStr: 是否显示消息ID(字符串) MsgClassName:是否显示窗体类名 MsgHwnd: 是否显示窗体句柄 MsgWParam: 是否显示消息WParam值 MsgLParam: 是否显示消息LParam值2、DefineClassName: 允许(禁止)显示消息的窗体类名,如TForm13、DefineMsg: 允许(禁止)显示的消息ID,如$0005、wm_paint4、DefineState: EnableMsg: DefineMsg不为空串时,False禁止显示加入DefineMsg的消息,True只显示加入DefineMsg的消息 EnableClassName: DefinClassName不为空串时,False禁止显示加入DefineClassName的消息,True只显示加入DefineMsg的消息 EnableHwnd: 设置了AddDefineHwnd后,False禁止显示ADDDefineHwnd加入的窗体句柄消息,True则只显示加入的窗体句柄消息 EnableClassName和EnableHwnd设置不一致时,以EnableClassName为准5、DisableFrequent:是否过滤掉WM_NCHITTEST、WM_SETCURSOR、WM_ENTERIDLEWM_NOTIFY出现频繁的消息6、HookType: 设置钩子类型7、Activate: 是否激活钩子(三)、方法1、AddDefineHwnd(): 加入的句柄为允许(禁止)显示消息的窗体句柄(可加入多个)2、Clear: 清空消息信息(四)、事件HookMethod: 可以在此事件中自行处理钩子,钩子返回值Result默认为0 注意在处理CBT钩子的HCBT_CreateWnd时,设计期拖放到窗体的控件还未创建,使用这些控件的属性和方法会出现异常。 (五)、文件MsgInfo.txt是参考文件,必须放入执行程序当前目录。此文件可自定义或扩充,无需排序格式:第一行表示消息ID的十六进制字符串,如$0005,必须$开头 第二行表示消息ID的字符串常量,如WM_Size 第三行表示该消息的说明(可省略)MsgResult.txt显示结果(六)、制作双元软件工作室http://shuangyuan.wx-e.com/

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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