Windows 中的窗口消息 49373 (0xC0DD) 是什么?

sam*_*420 2 c windows graphics winapi

我在w10上使用spyxx来监视我从我的应用程序创建的窗口收到的消息,我注意到日志中的这一行:

<000011> 00000000000A 1022 P message:0xC0DD [Registrato:"TaskbarButtonCreated"] wParam:00000000 lParam:00000000
Run Code Online (Sandbox Code Playgroud)

如果您问自己什么是“registrato”,请考虑它是意大利语中“注册”的意思,现在我的问题是这条消息是什么以及它的目的是什么?我还在定义了其他 ID 的同一个头文件中进行了搜索,但我找不到任何具有该值的消息

Rem*_*eau 5

0xC0DD位于应用程序在运行时通过以下方式“注册”的窗口消息范围内RegisterWindowMessage()

\n
\n

如果消息注册成功,则返回值为 0xC000 到 0xFFFF 范围内的消息标识符。

\n
\n

根据 MSDN 文档:

\n
\n

以下是消息编号的范围。

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n
范围意义
0 到 WM_USER \xe2\x80\x931保留供系统使用的消息。
WM_USER 到 0x7FFF供私有窗口类使用的整数消息。
WM_APP (0x8000) 至 0xBFFF可供应用程序使用的消息。
0xC000 至 0xFFFF供应用程序使用的字符串消息。
大于 0xFFFF系统保留。
\n
\n

第一个范围(0 到 WM_USER \xe2\x80\x931)中的消息号由系统定义。此范围内未明确定义的值由系统保留。

\n

应用程序可以定义和使用第二个范围(WM_USER 到 0x7FFF)中的消息号来在私有窗口类中发送消息。这些值不能用于定义在整个应用程序中有意义的消息,因为某些预定义的窗口类已经定义了此范围内的值。例如,预定义的控件类(例如 BUTTON、EDIT、LISTBOX 和 COMBOBOX)可以使用这些值。此范围内的消息不应发送到其他应用程序,除非应用程序设计为交换消息并将相同的含义附加到消息号。

\n

第三个范围(0x8000 到 0xBFFF)中的消息编号可供应用程序用作私人消息。此范围内的消息不会与系统消息冲突。

\n

第四个范围(0xC000 到 0xFFFF)中的消息号是在运行时定义的,此时应用程序调用 RegisterWindowMessage 函数来检索字符串的消息号。所有注册相同字符串的应用程序都可以使用关联的消息号来交换消息。然而,实际的消息编号不是常数,不能假定不同会话之间的消息编号相同。

\n

第五个范围(大于0xFFFF)中的消息号由系统保留。

\n
\n

在这种情况下,您看到的值是任务栏调用的结果RegisterWindowMessage("TaskbarButtonCreated")。正如您可以从其名称中了解到的那样,此消息的目的是在创建窗口的任务栏按钮时通知您的应用程序:

\n

任务栏扩展

\n
\n

当应用程序显示一个窗口时,其任务栏按钮是由系统创建的。当按钮到位时,任务栏会TaskbarButtonCreated向窗口发送一条消息。它的值是通过调用计算的RegisterWindowMessage(L("TaskbarButtonCreated"))您的应用程序必须在调用任何方法之前接收该消息ITaskbarList3

\n
\n

如果您ITaskbarList3在代码中使用该界面与任务栏按钮交互(即显示进度状态等),则需要在运行时注册此消息并等待它到达窗口的消息处理程序,然后再进行操作。然后可以安全地调用界面的方法来操作窗口的任务栏按钮。

\n