Affichage de la sortie de la console dans un programme Windows C natif
Dans les programmes Windows C utilisant le point d'entrée WinMain, sortie de la console générée par des fonctions telles que std : :cout peut ne pas être visible par défaut. En effet, les applications d'interface utilisateur graphique (GUI) ne sont généralement pas associées à une fenêtre de console.
Solutions :
1. Attachez une console à l'application :
2. Rediriger la sortie de la console vers un fichier :
Exemple de code utilisant la redirection de console :
L'extrait de code suivant montre comment attacher une console à un programme Windows et y rediriger les flux :
void RedirectIOToConsole() { int hConHandle; long lStdHandle; CONSOLE_SCREEN_BUFFER_INFO coninfo; FILE *fp; // Allocate a console for this app AllocConsole(); // Set the screen buffer size for scrolling GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &coninfo); coninfo.dwSize.Y = 500; SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coninfo.dwSize); // Redirect stdout lStdHandle = (long)GetStdHandle(STD_OUTPUT_HANDLE); hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); fp = _fdopen(hConHandle, "w"); *stdout = *fp; setvbuf(stdout, NULL, _IONBF, 0); // Redirect stdin lStdHandle = (long)GetStdHandle(STD_INPUT_HANDLE); hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); fp = _fdopen(hConHandle, "r"); *stdin = *fp; setvbuf(stdin, NULL, _IONBF, 0); // Redirect stderr lStdHandle = (long)GetStdHandle(STD_ERROR_HANDLE); hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); fp = _fdopen(hConHandle, "w"); *stderr = *fp; setvbuf(stderr, NULL, _IONBF, 0); }
Inclure En-tête :
#include "guicon.h"
Utilisation :
#ifdef _DEBUG RedirectIOToConsole(); #endif
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!