Partager via


Modes de console de haut niveau

Le comportement des fonctions de haut niveau de la console est affecté par les modes d'entrée et de sortie de console. Tous les modes d’entrée de console suivants sont activés pour la mémoire tampon d’entrée d’une console lors de la création d’une console :

  • Mode d’entrée de ligne :
  • Mode d’entrée traité
  • Mode d’entrée écho

Les deux modes de sortie de console suivants sont activés pour une mémoire tampon de l’écran de la console lors de sa création :

  • Mode de sortie traité
  • Enveloppement en mode de sortie EOL

Les trois modes d’entrée, ainsi que le mode de sortie traité, sont conçus pour fonctionner ensemble. Il est préférable d’activer ou de désactiver tous ces modes en tant que groupe. Lorsque tous les modes activés sont activés, l’application est dite en mode « traité », ce qui signifie que la plupart du traitement est géré pour l’application. Lorsque tous les modes sont désactivées, l’application est en mode « brut », ce qui signifie que l’entrée n’est pas filtrée et que tout traitement est laissé à l’application.

Une application peut utiliser la fonction GetConsoleMode pour déterminer le mode actuel de la mémoire tampon d'entrée ou de la mémoire tampon de l'écran d'une console. Vous pouvez activer ou désactiver l’un de ces modes à l’aide des valeurs suivantes dans la fonction SetConsoleMode. Notez que la définition du mode de sortie d'une mémoire de tampon d'écran n'affecte pas le mode de sortie des autres mémoires de tampon d'écran.

Si le paramètre hConsoleHandle est un descripteur d’entrée, le mode peut être une ou plusieurs des valeurs suivantes. Quand une console est créée, tous les modes d’entrée à l’exception de ENABLE_WINDOW_INPUT et ENABLE_VIRTUAL_TERMINAL_INPUT sont activés par défaut.

Valeur Signification
ENABLE_ECHO_INPUT 0x0004 Les caractères lus par la fonction ReadFile ou ReadConsole sont écrits dans la mémoire tampon d’écran active à mesure qu’ils sont tapés dans la console. Ce mode peut être utilisé uniquement si le mode ENABLE_LINE_INPUT est également activé.
ENABLE_INSERT_MODE 0x0020 Quand ce mode est activé, le texte entré dans une fenêtre de console est inséré à la position actuelle du curseur et tout le texte se trouvant après cette position n’est pas remplacé. Quand il est désactivé, tout le texte qui suit est remplacé.
ENABLE_LINE_INPUT 0x0002 La fonction ReadFile ou ReadConsole renvoie une valeur uniquement quand un caractère de retour chariot est lu. Si ce mode est désactivé, les fonctions retournent un résultat quand un ou plusieurs caractères sont disponibles.
ENABLE_MOUSE_INPUT 0x0010 Si le pointeur de la souris se trouve dans les limites de la fenêtre de console et que la fenêtre a le focus de clavier, les événements de souris générés par le déplacement de la souris et les pressions sur les boutons sont placés dans la mémoire tampon d’entrée. Ces événements sont ignorés par ReadFile ou ReadConsole, même si ce mode est activé. La fonction ReadConsoleInput peut être utilisée pour lire les enregistrements d’entrée MOUSE_EVENT à partir de la mémoire tampon d’entrée.
ENABLE_PROCESSED_INPUT 0x0001 La combinaison de touches CTRL+C est traité par le système et n’est pas placé dans la mémoire tampon d’entrée. Si la mémoire tampon d’entrée est lue par ReadFile ou ReadConsole, les autres clés de contrôle sont traitées par le système et ne sont pas retournées dans la mémoire tampon ReadFile ou ReadConsole. Si le mode ENABLE_LINE_INPUT est également activé, les caractères retour arrière, retour chariot et saut de ligne sont gérés par le système.
ENABLE_QUICK_EDIT_MODE 0x0040 Cet indicateur permet à l’utilisateur de sélectionner et de modifier du texte à l’aide de la souris. Pour activer ce mode, utilisez ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS. Pour désactiver ce mode, utilisez ENABLE_EXTENDED_FLAGS sans cet indicateur.
ENABLE_WINDOW_INPUT 0x0008 Les interactions utilisateur qui changent la taille de la mémoire tampon de l’écran de la console sont signalées dans la mémoire tampon d’entrée de la console. Les informations relatives à ces événements peuvent être lues à partir de la mémoire tampon d’entrée par les applications à l’aide de la fonction ReadConsoleInput, mais pas par celles utilisant ReadFile ou ReadConsole.
ENABLE_VIRTUAL_TERMINAL_INPUT 0x0200 Si vous définissez cet indicateur, le moteur de traitement de terminaux virtuels convertit les entrées utilisateur reçues par la fenêtre de console en séquences de terminaux virtuels de console qui peuvent être récupérées par une application de prise en charge à l’aide des fonctions ReadFile ou ReadConsole.

Cet indicateur est conçu pour être généralement utilisé conjointement avec ENABLE_VIRTUAL_TERMINAL_PROCESSING sur le descripteur de sortie afin de se connecter à une application qui communique exclusivement par le biais de séquences de terminaux virtuels.

Si le paramètre hConsoleHandle est un descripteur de mémoire tampon d’écran, le mode peut être une ou plusieurs des valeurs suivantes. Quand une mémoire tampon d’écran est créée, les deux modes de sortie sont activés par défaut.

Valeur Signification
ENABLE_PROCESSED_OUTPUT 0x0001 Les caractères écrits par la fonction WriteFile ou WriteConsole ou répercutés par la fonction ReadFile ou ReadConsole sont analysés pour les séquences de contrôle ASCII, et l’action appropriée est effectuée. Les caractères retour arrière, tabulation, cloche, retour chariot et saut de ligne sont traités. Elle doit être activée lors de l’utilisation de séquences de contrôle ou quand ENABLE_VIRTUAL_TERMINAL_PROCESSING est défini.
ENABLE_WRAP_AT_EOL_OUTPUT 0x0002 Lors de l’écriture avec WriteFile ou WriteConsole ou de la répercussion avec ReadFile ou ReadConsole, le curseur se déplace au début de la ligne suivante quand il atteint la fin de la ligne actuelle. Cela entraîne le défilement automatique des lignes affichées dans la fenêtre de console quand le curseur avance au-delà de la dernière ligne de la fenêtre. De plus, le contenu de la mémoire tampon de l’écran de la console défile également vers le haut (../ignorant la ligne supérieure de la mémoire tampon de l’écran de la console) quand le curseur avance au-delà de la dernière ligne dans la mémoire tampon de l’écran de la console. Si ce mode est désactivé, le dernier caractère de la ligne est remplacé par les caractères suivants.
ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 Lors de l’écriture avec WriteFile ou WriteConsole, les caractères sont analysés pour les séquences VT100 et les séquences de caractères de contrôle similaires qui contrôlent le déplacement du curseur, le mode couleur/police et d’autres opérations qui peuvent également être effectuées par le biais des API consoles existantes. Pour plus d’informations, consultez Séquences de terminaux virtuels de console.
Vérifiez que ENABLE_PROCESSED_OUTPUT est défini lors de l’utilisation de cet indicateur.
DISABLE_NEWLINE_AUTO_RETURN 0x0008 Lors de l’écriture avec WriteFile ou WriteConsole, cela ajoute un état supplémentaire au retour à la ligne qui peut retarder le déplacement du curseur et les opérations de défilement de la mémoire tampon.

Normalement, quand ENABLE_WRAP_AT_EOL_OUTPUT est défini et que le texte atteint la fin de la ligne, le curseur se déplace immédiatement à la ligne suivante et le contenu de la mémoire tampon remonte d’une ligne vers le haut. Contrairement à ce jeu d’indicateurs, le curseur ne passe pas à la ligne suivante et l’opération de défilement n’est pas effectuée. Le caractère écrit est imprimé en position finale sur la ligne et le curseur reste au-dessus de ce caractère comme si ENABLE_WRAP_AT_EOL_OUTPUT était désactivé, mais le prochain caractère imprimable sera imprimé comme si ENABLE_WRAP_AT_EOL_OUTPUT était activé. Aucun remplacement ne se produit. Plus précisément, le curseur avance rapidement jusqu’à la ligne suivante, un défilement est effectué si nécessaire, le caractère est affiché et le curseur avance d’une position.

Cet indicateur est conçu pour être généralement utilisé conjointement avec ENABLE_VIRTUAL_TERMINAL_PROCESSING défini afin de mieux émuler un émulateur de terminal où l’écriture du caractère final à l’écran (../en bas à droite) sans déclencher un défilement immédiat est le comportement souhaité.
ENABLE_LVB_GRID_WORLDWIDE 0x0010 Les API pour écrire des attributs de caractères, notamment WriteConsoleOutput et WriteConsoleOutputAttribute permettent l’utilisation d’indicateurs à partir d’attributs de caractères pour ajuster la couleur du premier plan et de l’arrière-plan du texte. De plus, une plage d’indicateurs DBCS a été spécifiée avec le préfixe COMMON_LVB. Ces indicateurs fonctionnaient uniquement dans les pages de codes DBCS pour le chinois, le japonais et le coréen.

À l’exception des indicateurs d’octet de début et d’octet de fin, les indicateurs restants qui décrivent le dessin au trait et la vidéo inverse (../permuter les couleurs de premier plan et d’arrière-plan) peuvent être utiles pour d’autres langues afin de mettre en évidence certaines parties de la sortie.

La définition de cet indicateur de mode de la console permet d’utiliser ces attributs dans chaque page de codes de chaque langue.

Il est désactivé par défaut pour assurer la compatibilité avec les applications connues qui ont historiquement tiré parti de la console en ignorant ces indicateurs sur les ordinateurs non CJC (chinois, japonais, coréen) pour stocker des bits dans ces champs pour leur propre fonctionnement ou par accident.

Notez que l’utilisation du mode ENABLE_VIRTUAL_TERMINAL_PROCESSING peut entraîner la définition d’indicateurs de grille LVB et de vidéo inverse alors que cet indicateur est encore désactivé si l’application attachée demande le soulignement ou la vidéo inverse par le biais de séquences de terminaux virtuels de console.