VC利用console除錯和記錄日誌
阿新 • • 發佈:2019-02-12
#include <stdio.h>
//釋放控制檯視窗
FreeConsole();
//申請控制檯視窗
AllocConsole();
//設定標題
SetConsoleTitle(TCHAR);
//重定向輸出到控制檯
freopen("CONOUT$","w+t",stdout);
//重定向輸出到檔案
freopen("output.txt","a+",stdout);
//設定控制檯文字和背景顏色
SetConsoleTextAttribute()
//獲取標準輸出視窗
GetStdHandle(STD_OUTPUT_HANDLE)
// 重新設定緩衝區大小
COORD size = {1024, 1024 };
SetConsoleScreenBufferSize(hOut,size);
// 重置視窗位置和大小
SMALL_RECT rc = {0,0, 1024-1, 1024-1};
SetConsoleWindowInfo(hOut,true ,&rc);
//強制重新整理緩衝區
fflush(stdout);
除錯GUI程式,只需要包含stdio.h ,然後再OnCreate()或者Init.. 中 AllocConsole(),然後重定向輸出到控制檯,就可以利用printf…等函式將資訊輸出到控制檯視窗.控制檯實際的標頭檔案在 #include
#define PRINT_INFO
#define ErrA{SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);}printf
#define InfoA{SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);}printf
//wprintf 如果輸出中文有問題,嘗試包含標頭檔案#include <locale.h> 然後setlocale(LC_ALL, "chs");
#define ErrW{SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);}wprintf
#define InfoW{SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);}wprintf
#ifdef PRINT_INFO
#ifdef _UNICODE
#define ErrErrW
#define InfoInfoW
#else
#define ErrErrA
#define InfoInfoA
#endif
#else
#define Err
#define Info
#endif
ErrA(錯誤:%d %s",nErrID,"錯誤資訊");
ErrA(%s %d Err:%d %s",__FUNCTION__, __LINE__,nErrID,"錯誤資訊");