1. 程式人生 > >VC利用console除錯和記錄日誌

VC利用console除錯和記錄日誌

#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,"錯誤資訊");