win32 WM_NOTIFY 与 WM_COMMAND

2023-12-19

这是一道理论题,旨在控制 win32 api 中的消息。

有什么区别WM_COMMAND and WM_NOTIFY? 我们什么时候需要处理这些消息,什么时候我们选择忽略它们?

出现这种疑问是因为当用户与控件交互时,这两个消息都会发送,并且都将相同的信息发送到事件类型的窗口过程,控件 I 和控件句柄都作为结构 (LPNMHDR 在以下情况下WM_NOTIFY)或直接(LPARAM 句柄来控制和 LOWORD (WPARAM),以防WM_COMMAND)

既然有这么多相似之处,为什么我们仍然一起使用两者而不是仅仅贬低其中一个呢?


由于向后兼容性的原因,我们使用两者。新的控件倾向于使用 WM_NOTIFY(它的功能要强大得多),但是现有的控件会发送 WM_COMMAND,并且 MS 不会改变这一点。

我说 WM_NOTIFY 更强大,因为它的 lParam 是一个 NMHDR *,如果 NMHDR 是 POD 类型(或现代 C++ 术语中的标准布局)的第一个成员,那么您可以将 lParam 转换为控件发送的实际类型。 WM_COMMAND 所能提供的只是命令代码和窗口句柄。

至于何时处理它们,这完全是一个需要的问题,如果您需要处理特定控件的一部分上的特定操作,那么您就处理该消息,如果不需要,则不处理。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

win32 WM_NOTIFY 与 WM_COMMAND 的相关文章

  • 如何使用 WinAPI 读取 MessageBox 文本

    如何读取标准Win消息框 Info 的消息 Using SendMessage this HandleControl WM GETTEXT builder Capacity builder 我只能读取消息框的标题或按钮的文本 但不能读取消息
  • 如何等到我启动的程序使用完该文件后才删除该文件?

    我一直在寻找一种方法来打开通过 Delphi 应用程序及其适当的应用程序保存到我的计算机上的文件 该文件存储在 SQL 数据库中的 Varbinary 字段中 加载到内存流中 然后通过 TMemoryStream 的 SavetoFile
  • 如何在超时后关闭上下文菜单?

    我需要有一个上下文菜单 当前使用 TrackPopupMenu 创建 在一段时间不活动后自动关闭 我正在尝试搜索 但只找到相反的结果 如何activate超时后的弹出窗口 或针对特定应用程序的专门内容 我发现的唯一接近的事情是枚举桌面的子级
  • Windows 中的 JNA:使用 Windows 作业自动终止子进程

    我需要在 Windows 中的 java 应用程序中启动一个子进程 最终可以通过任务管理器杀死 终止我的 java 应用程序 因此 我需要将此子进程与父进程 链接 如果父进程终止 则两者都会终止 在 Windows API 中我们有创建作业
  • C++中最大化窗口时的问题

    我的程序需要任意最大化当前桌面上的任何窗口 我通过调用来实现这一点ShowWindow hWnd SW MAXIMIZE 其中 hWnd 是HWND我想要最大化的窗口 当该行代码执行时 相关窗口 此处为记事本 如下所示 一切看起来都很好 除
  • 我可以保存控制台窗口的缓冲区或内容以供将来使用吗?

    我对控制台应用程序很感兴趣 只是想知道 保存控制台窗口的当前缓冲区以供以后使用并提供某种历史导航功能的最佳方法是什么 我知道 Diagnostics 命名空间提供了读取标准输出的能力 但这只是在您重定向它的情况下进行的 所以基本上您必须在新
  • 发送和接收 Windows 消息

    Windows 消息似乎是通知 Windows 操作系统上的应用程序的好方法 它实际上运作良好 但我想到了几个问题 How to指定结构化数据lparamSendMessage 例程 就像许多消息代码一样 我的意思是 参数当然是一个指针 但
  • Windows BlockInput 功能不起作用

    Why BlockInput不工作 include
  • 在64位环境中加载32位进程

    我有以下几个问题 CHM 是 编译的 HTML 文件 我的 CHM 文件有一个启动 32 位应用程序的链接 CHM 文件是用 Javascript 编码的 这在 32 位操作系统环境中运行良好 但这在 64 位操作系统环境中不起作用 原因是
  • 将第二个显示器显示设置更改为复制

    我正在尝试以编程方式使第二个监视器具有重复的显示 我的下面的功能应该将第二个显示器的显示更改为 重复显示 即使第二个显示器显示第一个 主显示器上的所有内容 我的问题 当我运行我的函数时 它成功找到第二个监视器 并通过更改 DEVMODE d
  • Windows 内核中可能的最大文件名长度

    我想知道 什么是longestWindows 内核允许的可能名称长度 例如 我知道内核使用UNICODE STRING结构来保存所有对象路径 并且由于宽字符字符串的字节长度存储在USHORT 允许最大路径长度为 2 15 1 个字符 有没有
  • 使用普通画布/文本输出更新LayeredWindow

    有没有一种方法可以使用画布在表单上绘图 然后使用 updatelayeredwindow 这样表单就不可见 但文本可见 就像只显示文本的半透明表单一样 如果没有 那么有没有办法只用画布 opengl directx 制作某种半透明形式 我想
  • 使用createremotethread注入dll

    createremotethread如何在进程内执行dll 它使用的参数之一是 loadlibraryA 所以我得到了它在进程中执行 loadlibrary 函数的部分 然后它应该将上下文切换到内核模式 dll 是否由具有 loadlibr
  • 将 CreateThread 与 lambda 结合使用

    只是试验 但我想知道是否可以使该代码工作 如编译 void main int number 5 DWORD dontThreadOnMe PVOID PVOID data int value int data cout lt lt valu
  • 如何获取与Windows主题相关的图标?

    如何获取Windows中某个控件的图标 更具体地说 我想从 ListView 标题中获取排序箭头图标 我尝试使用以下方法来获取它 HRESULT GetSortArrowBmp HWND hwnd HEADERSORTARROWSTATES
  • 在按钮背景上拉伸/收缩时,位图会失去质量

    简介及相关信息 我有一个所有者绘制的静态控件 它应该在渐变背景上有位图 静态控制尺寸不固定 它们是在创建父窗口期间计算的 我从资源文件加载背景颜色为 RGB 255 163 94 的位图 Using TransparentBlt RGB 2
  • 在 win32 API 应用程序中实现全球化/多语言功能

    我用 Visual C 开发了一个窗口应用程序 Win32 API 我必须在此应用程序中添加多语言功能 任何人都可以指导我如何完成这项任务 Windows 上多语言应用程序的基础是 资源 的使用 资源是附加在可执行文件末尾的块 它仅包含数据
  • WIN32,C++:是否可以在不隐藏窗口的情况下对窗口进行动画处理?

    我有一个编辑控件 一个文本字段 我想要为其设置动画 我想要的动画是它滑出 为该文本字段创建一条额外的线 我可以为我的文本字段设置动画并使其变大 但是要显示滑动动画 我首先必须隐藏它 这意味着整个文本字段会滑出 就像第一次从无到有一样 而不是
  • 移动/调整窗口大小时闪烁

    我开发了一个显示 jpeg 图像的应用程序 它可以显示 4 个图像 屏幕的每个象限各一个 为此 它使用了 4 个窗口 窗口没有边框 框架 也没有标题栏 当加载新图像时 窗口大小会根据新图像进行调整 然后显示该图像 尤其是当窗户做得较大时 经
  • Windows 窗口对接

    我想知道如何在 Windows 中将窗口停靠 捕捉到屏幕的一侧 最好使用直接的 Win32 API 我正在寻找的效果就像任务栏 一个在屏幕上有保留空间的窗口 因此最大化另一个窗口会使该窗口占据屏幕的其余部分 但使我的窗口保持在适当的位置并可

随机推荐

  • PDFkit Rails3.1和开发环境

    我的 Rails 3 1 应用程序正在使用 PDFkit 来渲染特定页面 并且我遇到了 看起来像是 一个常见问题 尝试生成 pdf 导致进程挂起 我在 stackoverflow 上找到了这个解决方案 Rails 3 和 PDFkit ht
  • 如何在 jQuery 的 SELECT 元素中选择特定选项?

    如果您知道索引 值或文本 如果您没有可直接参考的 ID 也同样如此 This https stackoverflow com questions 149573 check if option is selected with jquery
  • asp.net mvc4 jquery 不工作

    我正在尝试运行放入我的 jquery 代码 布局 cshtml如下 Scripts Render bundles jquery RenderSection Scripts required false 上面的代码没有被触发 当我用 Chro
  • Dart 初始化最终变量

    我在dart中编写构造函数时遇到了问题 我有一个类有两个final变量 在构造函数中初始化它们 以下是错误的 因为final变量没有setter方法 class Person final String name final int age
  • 鼠标右键映射为用于在 Jelly Bean 中向后移动

    我们更改了 framework base services input inputreader cpp 中的部分代码 使鼠标右键可以向后遍历 case BTN RIGHT mBtnRight rawEvent gt value break
  • PHP 和 Laravel 的特征

    我正在使用 Laravel 5 1 当模型之前的模型使用appends array 如果我的特征中存在某些项目 我想将其添加到附加数组中 我不想编辑模型来实现这一目标 在这种情况下 特征实际上可用吗 或者我应该使用继承 array push
  • Laravel 4:如何将 WHERE 条件应用于 Eloquent 类的所有查询?

    我正在尝试为我拥有的表实现 已批准 状态 这非常简单 基本上 如果该行的批准列等于 1 则应该检索该行 否则不应检索 问题是 现在我必须遍历整个代码库并添加 WHERE 语句 即函数调用 这不仅耗时而且效率低下 如果我想删除该功能等 我怎样
  • 如何在 DynamoDB 中实现按项目的任意属性排序

    我的 DynamoDB 结构如下 我有患者 其患者信息存储在其文档中 我有索赔 索赔信息存储在其文档中 我的付款信息存储在其文档中 每项索赔都属于患者 患者可以提出一项或多项索赔 每一笔付款都属于患者 患者可以有一次或多次付款 I crea
  • 为什么马赛克::衍生因子比基函数慢两倍?

    我正在尝试使用derivedFactor来自mosaic在 R 中打包来创建因子变量 但速度慢得惊人 当我使用一系列代码编写相同的函数时if声明并运行 它的运行速度似乎几乎快了一倍 这是一个可重现的示例 抱歉长度太长 library mic
  • 在 Firestore 中查询 GeoHashes 不会返回任何内容

    Firebase 网站上给出了从 Firestore 检索给定点 50 公里位置内所有位置的代码 这里是 Find cities within 50km of London let center CLLocationCoordinate2D
  • 在 IE 8/9 中使用“use strict”是否安全

    根据这个http caniuse com use strict http caniuse com use strict use strict IE 8 9 版本不支持 我的问题是 在 IE 8 9 或不兼容的浏览器中使用 use stric
  • 如何获得逻辑回归特征对于特定预测的相对重要性?

    我正在使用逻辑回归 在 scikit 中 来解决二元分类问题 并且有兴趣能够解释每个单独的预测 更准确地说 我感兴趣的是预测正类的概率 并衡量每个特征对于该预测的重要性 使用系数 Beta 作为重要性衡量标准通常是一个坏主意正如这里所回答的
  • C++ 将变量转换为模板参数

    我想使用模板进行优化 如上所述here https stackoverflow com a 8805655 1341914 但是 随着 bool 模板参数数量的不断增加 实例化模板可能会有太多分支 如果您使用更大的枚举而不是布尔值 它会变得
  • RabbitMQ - 联合队列与交换联合

    我已经建立了一个兔子集群 每次数据库中发生变化时 我都会将消息发布到扇出交换中 我有专用队列绑定到此交换 用于使用这些更新的一些微服务 并且我最初还为外部客户端设置了专用队列 以便他们可以将其与自己的 Rabbit 基础设施联合并使用每条消
  • 使用投影从子表中获取特定列

    我有两张桌子 Loan id amount duration LoanStatus id status loan id just an example but it has lot more fields in this table 贷款
  • 在 jquery 中选择主复选框时选中/取消选中复选框

    我的列标题中有一个复选框 单击它时 需要选中所有复选框 取消选中主复选框时 所有复选框都应取消选中 我用谷歌搜索了很多 但我只得到了这种事情的 javascript 代码 但我想要纯 JQuery 的东西 我将我的代码粘贴在这里 现在单击主
  • Laravel 4.1 从响应中删除枢轴属性

    我正在使用 laravel 4 1 构建 api 我有一个工作正常的枢轴表 但响应带有我不想要的枢轴属性 正如您将在我的示例中看到的 我有两个表名称 trips 和 users 我不想在我的回复中看到数据透视表属性 这是示例 id 140
  • Python 中的警报框?

    是否有可能生成类似于Python中JavaScript的alert message 的警报 并且应用程序作为守护进程运行 这将在 Windows 中运行 很可能是 XP 但 2000 和 Vista 也非常有可能 Update 这是为了在后
  • 从 Activity android 退出时停止播放 exo 播放器视频

    我正在使用 Exo Player 我的视频播放正常 但是当我按后退按钮并退出活动时 我的视频继续在后台播放 我不知道如何在活动完成后停止播放 请帮助 这是我在 recyclerview 适配器中的 exoplayer 代码 String m
  • win32 WM_NOTIFY 与 WM_COMMAND

    这是一道理论题 旨在控制 win32 api 中的消息 有什么区别WM COMMAND and WM NOTIFY 我们什么时候需要处理这些消息 什么时候我们选择忽略它们 出现这种疑问是因为当用户与控件交互时 这两个消息都会发送 并且都将相