未定义的 WIN32 消息
Undefined WIN32 messages
我在 windows 消息回调中收到奇怪的输入。
除了所有正常的消息,如 WM_SIZE
,它们工作正常,还有一些消息没有出现在任何 table 中,如 this one. And they are not defined as error codes。
消息是:(十进制/十六进制)
356 / 0164 (wParam: 0, lParam: 5760884)
49291 / c08b (wParam: 4294967292 or 0, lParam: 0)
49348 / c0c4 (wParam: 0, lParam: 0)
有谁知道它们的意思,或者我为什么要得到它们?
根据 Win32 文档:
The following are the ranges of message numbers.
Range Meaning
0 through WM_USER–1 Messages reserved for use by the system.
WM_USER through 0x7FFF Integer messages for use by private window classes.
WM_APP (0x8000) through 0xBFFF Messages available for use by applications.
0xC000 through 0xFFFF String messages for use by applications.
Greater than 0xFFFF Reserved by the system.
Message numbers in the first range (0 through WM_USER –1) are defined by the system. Values in this range that are not explicitly defined are reserved by the system.
Message numbers in the second range (WM_USER through 0x7FFF) can be defined and used by an application to send messages within a private window class. These values cannot be used to define messages that are meaningful throughout an application because some predefined window classes already define values in this range. For example, predefined control classes such as BUTTON, EDIT, LISTBOX, and COMBOBOX may use these values. Messages in this range should not be sent to other applications unless the applications have been designed to exchange messages and to attach the same meaning to the message numbers.
Message numbers in the third range (0x8000 through 0xBFFF) are available for applications to use as private messages. Messages in this range do not conflict with system messages.
Message numbers in the fourth range (0xC000 through 0xFFFF) are defined at run time when an application calls the RegisterWindowMessage function to retrieve a message number for a string. All applications that register the same string can use the associated message number for exchanging messages. The actual message number, however, is not a constant and cannot be assumed to be the same between different sessions.
Message numbers in the fifth range (greater than 0xFFFF) are reserved by the system.
其中 WM_USER
是 0x0400。
所以,
356(0x164)是系统保留信息。具体来说就是CB_GETCOMBOBOXINFO
.
49291 (0xC08B) 和 49348 (0xC0C4) 是用 RegisterWindowMessage()
at runtime. You may be able to use GetClipboardFormatName()
to retrieve the original string value used for the registration, as RegisterWindowMessage()
and RegisterClipboardFormat()
注册的字符串消息 通常 共享一个公共原子 table.
我在 windows 消息回调中收到奇怪的输入。
除了所有正常的消息,如 WM_SIZE
,它们工作正常,还有一些消息没有出现在任何 table 中,如 this one. And they are not defined as error codes。
消息是:(十进制/十六进制)
356 / 0164 (wParam: 0, lParam: 5760884)
49291 / c08b (wParam: 4294967292 or 0, lParam: 0)
49348 / c0c4 (wParam: 0, lParam: 0)
有谁知道它们的意思,或者我为什么要得到它们?
根据 Win32 文档:
The following are the ranges of message numbers.
Range Meaning 0 through WM_USER–1 Messages reserved for use by the system. WM_USER through 0x7FFF Integer messages for use by private window classes. WM_APP (0x8000) through 0xBFFF Messages available for use by applications. 0xC000 through 0xFFFF String messages for use by applications. Greater than 0xFFFF Reserved by the system.Message numbers in the first range (0 through WM_USER –1) are defined by the system. Values in this range that are not explicitly defined are reserved by the system.
Message numbers in the second range (WM_USER through 0x7FFF) can be defined and used by an application to send messages within a private window class. These values cannot be used to define messages that are meaningful throughout an application because some predefined window classes already define values in this range. For example, predefined control classes such as BUTTON, EDIT, LISTBOX, and COMBOBOX may use these values. Messages in this range should not be sent to other applications unless the applications have been designed to exchange messages and to attach the same meaning to the message numbers.
Message numbers in the third range (0x8000 through 0xBFFF) are available for applications to use as private messages. Messages in this range do not conflict with system messages.
Message numbers in the fourth range (0xC000 through 0xFFFF) are defined at run time when an application calls the RegisterWindowMessage function to retrieve a message number for a string. All applications that register the same string can use the associated message number for exchanging messages. The actual message number, however, is not a constant and cannot be assumed to be the same between different sessions.
Message numbers in the fifth range (greater than 0xFFFF) are reserved by the system.
其中 WM_USER
是 0x0400。
所以,
356(0x164)是系统保留信息。具体来说就是
CB_GETCOMBOBOXINFO
.49291 (0xC08B) 和 49348 (0xC0C4) 是用
RegisterWindowMessage()
at runtime. You may be able to useGetClipboardFormatName()
to retrieve the original string value used for the registration, asRegisterWindowMessage()
andRegisterClipboardFormat()
注册的字符串消息 通常 共享一个公共原子 table.