À propos des scénarios de classification et d'utilisation des messages Windows

À propos de la classification des messages Windows

Dans le développement Windows, nous utilisons souvent des messages personnalisés. Concernant la sélection de valeur de ce message, c'est quand même un peu particulier. Jetons-y un coup d'œil aujourd'hui (pour ne pas nous perdre à nouveau).

Les messages Windows peuvent être divisés dans les catégories suivantes:

0 ~ 0x3FF (WM_USER - 1): message système

Ce type de message est défini et utilisé par le système d'exploitation. Nous essayons de ne pas définir nos propres messages dans cette plage, car ils seront utilisés par le système d'exploitation et reconnaîtront les paramètres WPARAM et LPARAM du message, et les rassembleront entre plusieurs processus (Marshal).

0x400 ~ 0x7FFF (WM_USER ~ WM_APP - 1): messages Windows

Les messages définis dans cette portée sont principalement utilisés dans les classes Windows. Par exemple, le message WM_USER + 1, si la fenêtre est un contrôle de barre d'outils, cela signifie TB_ENABLEBUTTON, si la fenêtre est un contrôle d'info-bulle, cela signifie TTM_ACTIVATE, si la fenêtre est une boîte de dialogue, alors Ce message indique DM_SETDEFID. Si vous créez votre propre contrôle personnalisé, il peut exprimer une autre signification complètement différente. Étant donné que les développeurs peuvent tous utiliser des messages de cette plage, le système d'exploitation ne peut pas clairement savoir comment analyser ce message, de sorte que le marshaling automatique ne sera pas effectué.

0x8000 ~ 0xBFFF (WM_APP ~ MAXINTATOM - 1): message de définition d'application

Les messages de cette plage sont définis par l'application elle-même. Cette plage de messages a été créée au cours de la période Windows 95 pour garantir que les messages personnalisés utilisés par les applications n'affecteront pas les messages Windows dans les futures versions de Windows. Comme les messages Windows ci-dessus, les développeurs peuvent utiliser des messages dans cette plage, de sorte que le système d'exploitation ne peut pas clairement savoir comment analyser ce message, donc le marshaling automatique ne sera pas effectué.

0xC000 ~ 0xFFFF (MAXINTATOM ~ MAXWORD): message d'enregistrement

Cette plage correspond principalement aux messages enregistrés via RegisterWindowMessage. Il convient de noter que la valeur réelle du message enregistré peut varier avec chaque opération du système, vous devez donc utiliser RegisterWindowMessage pour obtenir la valeur réelle du message. Comme les messages Windows ci-dessus, les développeurs peuvent utiliser des messages dans cette plage, de sorte que le système d'exploitation ne peut pas clairement savoir comment analyser ce message, donc le marshaling automatique ne sera pas effectué.

Je suppose que tu aimes

Origine blog.csdn.net/mmxida/article/details/107923815
conseillé
Classement