在本機C Windows 程式中顯示控制台輸出
在使用WinMain 入口點的C Windows 程式中,由std 等函數產生的控制台輸出: :cout 預設情況下可能不可見。這是因為圖形使用者介面 (GUI) 應用程式通常沒有與之關聯的控制台視窗。
解決方案:
1.將控制台附加到應用程式:
2。將控制台輸出重新導向至檔案:
使用控制台重定向的範例程式碼:
以下程式碼片段示範如何將控制台附加到Windows 程式並將串流重新導向到它:
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); }
包含標頭:
#include "guicon.h"
用法:
#ifdef _DEBUG RedirectIOToConsole(); #endif
以上是如何在本機 C Windows 程式中顯示控制台輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!