青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

wish  
日歷
<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456
統計
  • 隨筆 - 4
  • 文章 - 1
  • 評論 - 34
  • 引用 - 0

導航

常用鏈接

留言簿(8)

隨筆檔案

文章檔案

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

 

很多時候,調試GUI程序是很不方便的,通常的做法是使用MessageBox,但是作為一個模態窗口,它經常產生不必要的消息,比如killfocus, setfocus或者paint,從而影響調試的執行過程。當然,使用vc的調試器也不錯,但是這樣也很容易造成窗口切換從而產生干擾消息。
因此,如果能像在控制臺程序里那樣使用cin/cout對象或printf族函數,會使得調試過程方便得多。而通常,windows是不會為GUI程序產生單獨的命令行窗口的。所以我們是看不到使用標準輸入輸出流輸出的東西的。既然系統不提供,那就自己動手“造”出一個來吧!


下面是一個簡單的控制臺窗口對象,它可以為你的程序創建一個命令行窗口,并將stdout,stdin和stderr重定向到這個命令行窗口。在程序中建立一個這樣的對象之后,就可以直接使用cin/cout/*printf來操縱這個新的命令行窗口了!

.h文件
#ifndef _CUSTOM_CONSOLE_
#define _CUSTOM_CONSOLE_

#include <io.h>
#include <fcntl.h>
#include <stdio.h>
#include <windows.h>

class Console
{
public:
 Console();
 Console(LPCTSTR lpszTitle, SHORT ConsoleHeight = 300, SHORT ConsoleWidth = 80);
 ~Console();

private:
 void Attach(SHORT ConsoleHeight, SHORT ConsoleWidth);
 static BOOL IsExistent;
};

#endif

.cpp文件

#include "***.h"

 BOOL Console::IsExistent = FALSE;

 Console::Console()
 {
  if (IsExistent)
   return;

  AllocConsole();
  Attach(300, 80);

  IsExistent = TRUE;
 }

 Console::Console(LPCTSTR lpszTitle, SHORT ConsoleHeight, SHORT ConsoleWidth)
 {
  if (IsExistent)
   return;

  AllocConsole();
  SetConsoleTitle(lpszTitle);
  Attach(ConsoleHeight, ConsoleWidth);

  IsExistent = TRUE;
 }

 void Console::Attach(SHORT ConsoleHeight, SHORT ConsoleWidth)
 {
  HANDLE  hStd;
  int     fd;
  FILE    *file;

// 重定向標準輸入流句柄到新的控制臺窗口

  hStd = GetStdHandle(STD_INPUT_HANDLE);
  fd = _open_osfhandle(reinterpret_cast<intptr_t>(hStd), _O_TEXT); // 文本模式
  file = _fdopen(fd, "r");
  setvbuf(file, NULL, _IONBF, 0); // 無緩沖
  *stdin = *file;

// 重定向標準輸出流句柄到新的控制臺窗口

  hStd = GetStdHandle(STD_OUTPUT_HANDLE);
  COORD size;
  size.X = ConsoleWidth;
  size.Y = ConsoleHeight;
  SetConsoleScreenBufferSize(hStd, size);
  fd = _open_osfhandle(reinterpret_cast<intptr_t>(hStd), _O_TEXT); //文本模式
  file = _fdopen(fd, "w");
  setvbuf(file, NULL, _IONBF, 0); // 無緩沖
  *stdout = *file;

// 重定向標準錯誤流句柄到新的控制臺窗口

  hStd = GetStdHandle(STD_ERROR_HANDLE);
  fd = _open_osfhandle(reinterpret_cast<intptr_t>(hStd), _O_TEXT); // 文本模式
  file = _fdopen(fd, "w");
  setvbuf(file, NULL, _IONBF, 0); // 無緩沖
  *stderr = *file;

 }

 Console::~Console()
 {
  if (IsExistent)
  {
   FreeConsole();
   IsExistent = FALSE;
  }
 }


可以在WinMain里建立這個對象,若在main里建立這個對象,則同樣會出現一個新的控制臺窗口。
#ifdef _DEBUG // 當然,在release版里同樣可以使用
Console notused;
#endif

posted on 2007-05-08 19:42 閱讀(1017) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


 
Copyright © 淼 Powered by: 博客園 模板提供:滬江博客
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美电影院| 久久人人看视频| 久久精品成人欧美大片古装| 亚洲五月六月| 亚洲欧美乱综合| 香蕉久久夜色精品国产使用方法| 亚洲欧美在线一区二区| 亚洲免费在线视频一区 二区| 亚洲一区亚洲| 欧美一区二区成人| 久久久国产精品一区| 久久久久一区二区三区| 老色鬼久久亚洲一区二区| 欧美高清视频一区二区| 亚洲精品在线视频观看| 亚洲欧美国产一区二区三区| 久久国产精品久久久久久久久久| 女人色偷偷aa久久天堂| 国产精品捆绑调教| 欧美三级电影一区| 国产免费亚洲高清| 亚洲黄色av一区| 亚洲无吗在线| 免费在线成人av| 一区二区三区**美女毛片 | 亚洲欧洲免费视频| 亚洲成人资源网| 宅男精品导航| 蜜桃av噜噜一区| 国产精品第2页| 亚洲欧洲视频| 久久久91精品国产一区二区三区| 亚洲激情偷拍| 久久久久久尹人网香蕉| 国产精品久久久久久一区二区三区 | 久久精品一区蜜桃臀影院 | 午夜精品久久久久| 欧美高清视频一区二区三区在线观看| 中文日韩电影网站| 欧美金8天国| 亚洲第一区在线观看| 先锋影音久久久| 亚洲另类一区二区| 老鸭窝亚洲一区二区三区| 欧美精品1区2区| 亚洲大黄网站| 久久久久久久久久久久久久一区| 一区二区电影免费观看| 欧美黄色成人网| 亚洲国产日韩一区| 蜜桃av一区| 欧美在线日韩精品| 国产亚洲精品久久飘花| 亚洲资源在线观看| 日韩午夜激情电影| 欧美人交a欧美精品| 有坂深雪在线一区| 亚洲国产裸拍裸体视频在线观看乱了中文 | 国产亚洲欧美日韩一区二区| 亚洲四色影视在线观看| 欧美风情在线观看| 美女精品在线| 91久久在线视频| 亚洲二区在线观看| 欧美成人午夜激情在线| 91久久久久久久久| 欧美成人免费小视频| 久久久7777| 最新亚洲视频| 亚洲国产小视频| 欧美精品激情| 亚洲性感美女99在线| 一本色道久久综合亚洲精品不卡 | 最近中文字幕日韩精品 | 亚洲一区二区三区影院| 在线一区二区三区四区五区| 欧美三级第一页| 性做久久久久久免费观看欧美| 日韩一二三区视频| 欧美日韩精品二区| 亚洲午夜在线观看| 亚欧美中日韩视频| 在线观看日韩av电影| 亚洲精品乱码久久久久久| 欧美精品在线一区二区三区| 妖精成人www高清在线观看| 亚洲一区二区三| 在线观看国产精品网站| 欧美激情2020午夜免费观看| 久久中文字幕导航| 在线亚洲欧美| 欧美一区二区| 亚洲美女免费精品视频在线观看| 一本一本久久a久久精品牛牛影视| 国产欧美大片| 亚洲国产精品精华液2区45| 欧美网站在线观看| 久久一二三四| 欧美剧在线观看| 久久久久久久一区二区| 欧美成ee人免费视频| 午夜在线一区二区| 欧美精品三区| 久久中文字幕导航| 欧美不卡在线视频| 久久久99爱| 欧美午夜电影一区| 亚洲高清资源综合久久精品| 国产日韩欧美亚洲一区| 亚洲肉体裸体xxxx137| 在线观看日韩www视频免费| 亚洲欧洲精品一区二区精品久久久| 国产精品99免费看 | 欧美一级网站| 欧美高清视频在线| 久久免费视频在线| 国产精品久久久久久户外露出 | 亚洲国产1区| 亚洲综合国产| 亚洲午夜未删减在线观看| 久久深夜福利| 欧美中文字幕| 欧美日韩精品中文字幕| 欧美高清在线视频| 国产日韩欧美三级| 亚洲欧美激情一区| 亚洲女人天堂av| 欧美三区美女| 亚洲免费激情| 一区二区欧美亚洲| 欧美极品aⅴ影院| 亚洲国产精品久久久久婷婷老年| 在线精品视频一区二区三四| 久久riav二区三区| 欧美一级视频免费在线观看| 国产精品久久久久久久久久免费 | 久久综合久久久| 免费观看欧美在线视频的网站| 国产一区二区在线免费观看| 小辣椒精品导航| 久久久久一区二区三区四区| 国产在线乱码一区二区三区| 欧美在线视频一区二区三区| 久久久亚洲综合| 国产一区欧美日韩| 久久精品五月婷婷| 你懂的国产精品| 亚洲国产精品va| 欧美国产欧美亚洲国产日韩mv天天看完整 | 夜夜嗨一区二区三区| 制服丝袜激情欧洲亚洲| 欧美日韩国产探花| 日韩一级黄色片| 午夜精品剧场| 精品成人免费| 欧美高清视频| 亚洲一区区二区| 亚洲免费av电影| 欧美视频一区二区三区四区| 一区二区三区日韩| 久久国产成人| 亚洲电影免费观看高清| 欧美激情小视频| 一区二区三区三区在线| 久久精品国产亚洲5555| 亚洲国产精品综合| 欧美日韩精品一区二区天天拍小说| 亚洲天堂免费观看| 久久乐国产精品| 99re成人精品视频| 国产精品网站在线播放| 日韩视频在线播放| 久久成人这里只有精品| 久久久亚洲影院你懂的| 亚洲精品久久久久| 亚洲调教视频在线观看| 国产亚洲一区二区在线观看| 美女精品国产| 欧美日韩一区二区三区视频 | 美女啪啪无遮挡免费久久网站| 亚洲精品久久久久中文字幕欢迎你| 亚洲国产精品久久久| 国产精品视频一| 亚洲激情综合| 在线观看视频免费一区二区三区| 亚洲国产综合在线| 精品不卡一区二区三区| 亚洲免费中文| 午夜精品一区二区三区电影天堂 | 欧美一区二区三区四区在线观看| 国产美女精品一区二区三区| 亚洲国产老妈| 亚洲第一在线视频| 久久国产乱子精品免费女| 在线欧美福利| 久久视频在线免费观看| 午夜激情久久久| 国产精品久久久久久久午夜片| 亚洲精品国产系列| 一区二区欧美亚洲|