本站首页    管理页面    写新日志    退出


 

 

 


最新日志

练车
今天是2011年07月02号
温馨
CInternetSession 类
CHttpFile实现Get/Post
在MFC中加一个控制台DOS界面
strtol 函数
outputParam
有关CTime和ColeDateTime
variant_t ,_bstr_t 与

 


 

最近的评论

回复:CHttpFile实现Get/Po
回复:好久没有来了
回复:参数自整定的模糊PID
回复:电子设计大赛自由命题可参考的题目
回复:数字万用表使用方法
回复:公交车上巨搞笑的一幕
回复:电子设计大赛自由命题可参考的题目
回复:电子设计大赛自由命题可参考的题目
回复:电子设计大赛自由命题可参考的题目
回复:暑假回来

 


 

连接




    

在MFC中加一个控制台DOS界面
sccwqiang 发表于 2009-8-5 16:59:14

//****************************************************************// 如下,如是对话框程序的话,只要把我这段代码拷贝到OnInitDialog中就可以了,当然ConsoleHandler是全局的了.如果是文档程序的话,C**App::InitInstance中就OK。BOOL CMFCAPPDlg::OnInitDialog(){ //**************************************// BOOL bTest = AllocConsole(); if(!bTest) {  ::MessageBox(NULL,"ERROR AllocConsole",TEXT(""),MB_OK); } AllocConsole(); // you only get 1 console.  DWORD astds[3]={STD_OUTPUT_HANDLE,STD_ERROR_HANDLE,STD_INPUT_HANDLE}; FILE *atrgs[3]={stdout,stderr,stdin}; for( register int i=0; i<3; i++ )  {  long hand=(long)GetStdHandle(astds[i]);  if( hand!=(long)INVALID_HANDLE_VALUE )   {   int osf=_open_osfhandle(hand,_O_TEXT);   if( osf!=-1 )    {    FILE *fp=_fdopen(osf,(astds[i]==STD_INPUT_HANDLE) ? "r" : "w");    if( fp!=NULL )     {     *(atrgs[i])=*fp;     setvbuf(fp,NULL,_IONBF,0);    }   }  }    SetConsoleCtrlHandler((PHANDLER_ROUTINE)ConsoleHandler, TRUE); } ConsoleHandler控制台界面接收事件的用的。比如说CTRL + C,此时,这个回调函数就会得到此消息,你就可以在这里进行相关的处理了。这很好用的,特别是有时候你调试时候,想要拥有WIN32 Consele下的那种命令操作符: BOOL WINAPI ConsoleHandler(DWORD CEvent) {    switch(CEvent)    {    case CTRL_C_EVENT:        MessageBox(NULL,"CTRL + C received!", "signal", MB_OK);        break;    case CTRL_BREAK_EVENT:        MessageBox(NULL,"CTRL+BREAK received!", "signal", MB_OK);        break;    case CTRL_CLOSE_EVENT:        MessageBox(NULL,"Program being closed!", "signal", MB_OK);        break;    case CTRL_LOGOFF_EVENT:        MessageBox(NULL, "User is logging off!", "signal", MB_OK);        break;    case CTRL_SHUTDOWN_EVENT:        MessageBox(NULL,"User is logging off!", "signal", MB_OK);        break;    }    return TRUE;}  // Main message loop:  //**************************************// } 最后说一下,ConsoleHandler应该拿到最上面去,不然,会报错的。

阅读全文(3593) | 回复(0) | 编辑 | 精华


发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)

 

 

 


站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144326195 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号