带有 CN 和 WM 前缀的消息之间的区别

Difference between messages with CN and WM prefixes

在查看Delphi 源代码时,我经常看到来自Windows API 的消息声明,例如CN_NOTIFYWM_NOTIFY。我想知道它们之间的区别以及它们应该在什么时候使用?

WM 消息由 Win32 API 和最终用户代码使用。

CMCN 消息由 VCL 内部使用。

当 VCL 处理来自 Win32 API 的某些 WM 通知时,例如 WM_COMMANDWM_NOTIFY,它们从 child 控件发送到它的 parent window,VCL 将它们作为 CN 消息(CN_COMMANDCN_NOTIFY)反映回发送它们的 child。这允许 VCL 控件处理它们自己的通知。