GUI程序显示控制台窗口

本文描述如何在GUI程序中调出控制台窗口,以及对控制台的一些操作。

大家都知道GUI程序默认是没有控制台窗口的,我们可以调用windows API 来创建控制台。之后我们就可以使用 printf,scanf,cout,cin之类控制台的输入输出函数。我们很容易在GUI程序中使用控制台窗口输出调试信息。


1. 创建控制台

<span style="font-size:18px;">BOOL AllocConsole(void);</span>


2. 重定向标准输入输出 。创建控制台后,使用 cout 语句输出的内容并不会在我们创建的控制台窗口中显示出来。我们需要把标准输出重定向到控制台。

<span style="font-size:18px;">freopen("CONOUT$","w",stdout);
freopen("CONIN$","r",stdin);</span>

3. 设置控制台窗口标题

<span style="font-size:18px;">BOOL SetConsoleTitle(LPCTSTR lpConsoleTitle);</span>

4. 清空控制台内容

<span style="font-size:18px;">COORD coordScreen = { 0, 0 }; 
DWORD cCharsWritten; 
CONSOLE_SCREEN_BUFFER_INFO csbi; 
DWORD dwConSize; 
HANDLE hConsole = GetStdHandle( STD_OUTPUT_HANDLE );
	
GetConsoleScreenBufferInfo( hConsole, &csbi );
dwConSize = csbi.dwSize.X * csbi.dwSize.Y; 
FillConsoleOutputCharacter( hConsole, TEXT(' '), dwConSize, coordScreen, &cCharsWritten );
SetConsoleCursorPosition( hConsole, coordScreen );</span>


5. Disable 控制台窗口的关闭按钮。如果关闭了控制台窗口,GUI程序也会被关闭,我们可以Disable这个关闭按钮。

<span style="font-size:18px;">typedef HWND (WINAPI *PROCGETCONSOLEWINDOW)();
PROCGETCONSOLEWINDOW GetConsoleWindow;
HMODULE hKernel32 = GetModuleHandle("kernel32");
GetConsoleWindow = (PROCGETCONSOLEWINDOW)GetProcAddress(hKernel32,"GetConsoleWindow");
HWND hConsole = GetConsoleWindow();
::RemoveMenu(::GetSystemMenu(hConsole,FALSE),SC_CLOSE,MF_BYCOMMAND);</span>

6. 设置控制台输出文本foreground 和 background的颜色

<span style="font-size:18px;">WORD dwAttributes;
dwAttributes = FOREGROUND_GREEN|FOREGROUND_INTENSITY;// 文本颜色:绿色高亮。背景颜色:默认黑色。
SetTextAttribute(dwAttributes);</span>


7.销毁控制台

Void FreeConsole();





  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值