在mfc中打开console窗口

转载 2012年03月30日 10:46:11

在mfc中打开console窗口,备忘。

1 console.h

#ifndef __Console_H__ #define __Console_H__ #include <stdio.h> #include <stdlib.h> #include <stdarg.h> #include <io.h> #include <Windows.h> class Console : public Singleton<ARCConsole> { public: Console() { if (!m_hConsoleOutput) { AllocConsole(); m_hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE); char str[512] = "start Console Log...\n"; WriteConsole(m_hConsoleOutput, str, strlen(str),NULL, NULL); } } void printf(const char* format, ...) { va_list args; int len = 0; char str[512] = {0}; va_start(args, format); len = vsprintf(str, format, args) + 1; WriteConsole(m_hConsoleOutput, str, len,NULL, NULL); va_end(args); return; } ~Console() { if (m_hConsoleOutput) { char str[512] = "destroy console...\n"; WriteConsole(m_hConsoleOutput, str, strlen(str),NULL, NULL); CloseHandle(m_hConsoleOutput); FreeConsole(); } } static ARCConsole& getSingleton( void ) { assert( ms_Singleton ); return ( *ms_Singleton ); } static ARCConsole* getSingletonPtr( void ) { return ms_Singleton; } protected: static HANDLE m_hConsoleOutput; }; template<> Console* Ogre::Singleton<Console>::ms_Singleton = 0; HANDLE Console::m_hConsoleOutput = 0; extern Console _G_Console; Console _G_Console;
 
偷懒继承了ogre里的singleton类。若不同的lib分别创建了实例,子类记得覆盖父类的getSingleton()和getSingletonPtr()2个函数。

2 singleton.h

template <typename T> class Singleton { private: /** \brief Explicit private copy constructor. This is a forbidden operation.*/ Singleton(const Singleton<T> &); /** \brief Private operator= . This is a forbidden operation. */ Singleton& operator=(const Singleton<T> &); protected: static T* ms_Singleton; public: Singleton( void ) { assert( !ms_Singleton ); #if defined( _MSC_VER ) && _MSC_VER < 1200 int offset = (int)(T*)1 - (int)(Singleton <T>*)(T*)1; ms_Singleton = (T*)((int)this + offset); #else ms_Singleton = static_cast< T* >( this ); #endif } ~Singleton( void ) { assert( ms_Singleton ); ms_Singleton = 0; } static T& getSingleton( void ) { assert( ms_Singleton ); return ( *ms_Singleton ); } static T* getSingletonPtr( void ) { return ms_Singleton; } };
 
 

【MFC】 MFC添加控制台Console进行调试

MFC添加控制台Console进行调试

Win32程序(例如MFC、后台服务等)使用AllocConsole()添加调试用控制台

一、AllocConsole 函数 为调用进程分配一个新的控制台。 使用步骤: 1. AllocConsole();//分配控制台 2. HANDLE g_hOutput=GetStdHand...
  • inrgihc
  • inrgihc
  • 2016年02月21日 23:44
  • 1247

Win32和mfc下弹出console窗口的方法

在C**App InitInstance()中 调出console窗口BOOL CWinApp::InitInstance()    AllocConsole();    SetConsoleTitl...

mfc下调用console程序——四种方法

说明:基于对话框的MFC程序+console程序,vc6.0下。 一、由于在MFC下做了界面,而在Console程序下做的训练和识别部分,而将这部分整合到MFC下很繁琐,所以就在MFC下button...

Win32Console工程加入MFC

vs 2005下1project properties->general 左侧的 project defaults 中 use of MFC 改成 Using MFC in a shared DLL ...

MFC程序启动 控制台输出日志(开启console)

在MFC程序中,或者其调用的dll库中,打印出printf的内容. 在程序开始: AllocConsole(); freopen("CONOUT$","w+t",stdout); 在程...

窗口应用中或MFC中输出console

AllocConsole();  stdout = freopen("CONOUT$", "w" stdout);  printf("hello, world.\n");

Windows下打开多个console程序,同时指定其窗口位置的批处理方法

示例: E: cd E:\Bin\Server1 reg add hkcu\Console /t REG_DWORD /v WindowPosition /d 0x0000 /f //1...

隐藏Console窗口无效(续1)代码

  • 2014年10月20日 23:16
  • 9.62MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在mfc中打开console窗口
举报原因:
原因补充:

(最多只允许输入30个字)