在MFC程序中增加控制台窗口
MFC程序中,如果想要輸出調試信息,我們一般都是TRACE或者使用LOG文件,都不是很方便,第一個需要我們在調試狀態下,第二個也要配置麻煩而且不直觀。而使用Console來顯示調試信息應該是更好的選擇。下面介紹幾種在MFC程序中,使用控制臺來輸出調試信息。
1. 我們可以自己創建一個命令行窗口,在主程序的初始化的時候調用AllocConsole()函數。相應的退出的時候調用FreeConsole()
?
1 BOOL CMFCTestApp::InitInstance()2 {
3 ...
4 #ifdef _DEBUG
5 AllocConsole();
6 ?#endif
7 ...
8 CWinApp::InitInstance();
9 }
? 此種方式下,輸出函數需要使用_cprintf或者WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE)...),其他的如cout,printf都不能輸出到這里。當然,你可以自己封裝一套調試函數。
?
2. 修改工程的配置信息,一般控制程序類型的是通過這兩/SUBSYSTEM:WINDOWS來配置的,這個可以在工程屬性/Linker/System/Subsystem這里看到,我們可以通過修改程序為console類型來使得程序顯示命令行,但直接修改這個屬性會提示鏈接錯誤,原因是不同類型的程序有不同的程序入口。這里使用簡單的方式,直接在stdafx.h中添加一句
?
1 #ifdef _DEBUG2 #pragma comment( linker, "/subsystem:console /entry:wWinMainCRTStartup" )//我用VS2005
3 #endif
我們重新定義了系統類型和入口函數,這里面可以根據自己的需要任意組合。你可以參考你工程目前的屬性信息,工程屬性/Linker/Command Line,如下參考
?
#pragma?comment(?linker,?"/subsystem:windows /entry:WinMainCRTStartup"?)
#pragma?comment(?linker,?"/subsystem:windows?/entry:mainCRTStartup"?)
#pragma?comment(?linker,?"/subsystem:console?/entry:mainCRTStartup"?)
#pragma?comment(?linker,?"/subsystem:console /entry:WinMainCRTStartup"?)
?
PS如何改變Win32 Console 程序顯示顏色
HANDLE hCon=GetStdHandle(STD_OUTPUT_HANDLE);
/*
STD_INPUT_HANDLE 標準輸入的句柄 STD_OUTPUT_HANDLE 標準輸出的句柄 STD_ERROR_HANDLE 標準錯誤的句柄 */
SetConsoleTextAttribute(hCon,ForeColor|BackGroundColor);
/*其文本與背景顏色可以是 FOREGROUND_BLUE, FOREGROUND_GREEN, FOREGROUND_RED, FOREGROUND_INTENSITY, BACKGROUND_BLUE, BACKGROUND_GREEN, BACKGROUND_RED, and BACKGROUND_INTENSITY*/
總結
以上是生活随笔為你收集整理的在MFC程序中增加控制台窗口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HUE WorkFlow Schedul
- 下一篇: CDH 6.x 安装 Phoenix 服