2017-10-18 14 views
0

Les constantes WM_IME_COMPOSITION et WM_IME_KEYLAST ont toutes deux la même valeur 0x010F. On dirait qu'un programme Windows qui reçoit l'un de ces messages fenêtre ne sait pas quel message il a reçu. Alors, comment pourrait-on écrire du code pour gérer ces messages?Comment les constantes WM_IME_COMPOSITION et WM_IME_KEYLAST peuvent avoir la même valeur

Je demande par curiosité. Je n'ai pas besoin de gérer WM_IME_COMPOSITION et WM_IME_KEYLAST. Était simplement en regardant une documentation et remarqué la chose étrange que je ne comprends pas.

Répondre

1

WM_IME_KEYLAST n'est pas un identificateur de message. C'est une constante symbolique qui marque la fin de la série WM_IME_* de messages . Vous voyez ce modèle dans le SDK Windows, par exemple. il y a WM_KEYFIRST et WM_KEYLAST des symboles qui décrivent la gamme de valeurs liées aux messages clés.

Pour répondre à votre question: Vous ne gérez pas WM_IME_KEYLAST, donc il n'y a pas d'ambiguïté. Vous pouvez (et devriez) l'utiliser dans des expressions, où vous voulez gérer une série de messages, par exemple.


Bien que dans ce cas particulier, je ne suis pas tout à fait sûr, car il n'y a pas de symbole WM_IME_KEYFIRST correspondant. WM_IME_KEYLAST peut simplement être un nom obsolète, où la valeur de message alors inutilisée a été réutilisée pour le nouveau message WM_IME_COMPOSITION. Une fois expédié, vous ne pouvez plus revenir en arrière et retirer le symbole, il est donc toujours là, mais ne sert plus à rien.