在基于MFC开发对话框程序时,很需要一个能像控制台打印一样的调试窗口,使用一个宏开关,在release时又可以关闭。
- 配置控制台:在DoModal执行之前配置控制台。
BOOL CAudioRecordApp::InitInstance()
{
.
.
.
#ifdef LOG_DEBUG
AllocConsole();// 开辟控制台
SetConsoleTitle(_T("测试窗口"));// 设置控制台窗口标题
freopen("CONOUT$", "w", stdout);// 重定向输出
freopen("CONIN$", "r+t", stdin);// 申请读
TCHAR szBuf[100];
GetConsoleTitle(szBuf, 100);//得到控制台标题
HWND hwnd = ::FindWindow(NULL, szBuf);//查找控制台
HMENU hmenu = ::GetSystemMenu(hwnd, FALSE);//获取菜单
::RemoveMenu(hmenu, SC_CLOSE, MF_BYCOMMAND);//移除关闭
#endif
dlg.DoModal();
.
.
.
}
- 使用控制台:
//定义一个头文件 加入调试开关
#ifdef LOG_DEBUG
#define log(str, ...) printf(str, ##__VA_ARGS__)
#else
#define log(str, ...)
.
.
.
log("debug\n");