![]() |
1
2
当用户使用系统菜单或标题按钮时,这些wm_sys命令(maximize、minimize、restore、close和系统菜单中的命令)可能会发送到您的窗口。我相信(我的win32是非常生锈的)这些通常由defwindowproc处理,defwindowproc完成所有的脏工作,然后向您的窗口发送一个通知(wm-size/wm-size、wm-close等)。 现在,再往下看(隐藏在底部的简介中):
您还可以通过将特定的wm_syscommand发送到defwindowproc来执行它。其中包括上面提到的,但也包括额外的,如sc_screensave和sc_tasklist。我不知道像scu screensave这样的defwindowproc最终会采用什么样的路径来触发屏幕保护程序,但事实就是这样。 所以我认为整个wm_syscommands类都是系统命令。只是其中一些(从窗口标题可以访问的)被发送到窗口,其他的则由窗口根据您的判断发送。 |
![]() |
2
0
wm_syscommand只是wm_command的系统版本,它遵循相同的语义。当用户从菜单中选择一个项目、单击一个按钮、选择一个单选按钮等时,wm_命令消息将发送到您的应用程序。id参数指示单击了什么。也可以使用sendMessage()或postMessage()手动发送该命令。 |
![]() |
3
0
这是16位windows的遗留问题。 请在谷歌上搜索Bob Gunderson__getMessage和PeekMessage Internals_Microsoft Developer Network Technology Group_1992年12月11日的文章 在windows 3.1时代,操作系统是非抢占式的、单线程的。当getMessage/peekMessage函数访问系统队列并遇到ctrl-esc键down时,wm_syscommand消息被发送到wparam中带有sc_tasklist的活动应用程序(记住它是单线程系统)。“向下键”事件指示窗口显示“任务管理器”窗口。 |