窗口下调用console实现显示调试信息

编译环境vc6.0  根据网上来的,稍微修改了一下:

头文件:

// Console.h: interface for the CConsole class.

//

//

 

#if !defined(AFX_CONSOLE_H__833C45AE_1080_4666_B614_8C925BCB7FD2__INCLUDED_)

#define AFX_CONSOLE_H__833C45AE_1080_4666_B614_8C925BCB7FD2__INCLUDED_

 

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

 

 

 

#include <io.h>

#include <fcntl.h>

#include <stdio.h>

#include <windows.h>

typedef   INT_PTR   intptr_t; 

class CConsole  

{

public:

DWORD printf(CString message);

CConsole();

CConsole(LPCTSTR lpszTitle, SHORT ConsoleHeight = 300, SHORT ConsoleWidth = 80);

virtual ~CConsole();

private:

void Attach(SHORT ConsoleHeight, SHORT ConsoleWidth);

    static BOOL IsExistent;

    HANDLE  hStd;

//HANDLE  hStd;

 

};

 

#endif // !defined(AFX_CONSOLE_H__833C45AE_1080_4666_B614_8C925BCB7FD2__INCLUDED_)

cpp文件:
// Console.cpp: implementation of the CConsole class.
//
//

#include "stdafx.h"
#include "test002.h"
#include "Console.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//
// Construction/Destruction
//

 BOOL CConsole::IsExistent = FALSE;
CConsole::CConsole()
{
if (IsExistent)
   return;

  AllocConsole();
  Attach(300, 80);

  IsExistent = TRUE;

}

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

//  hStda = GetStdHandle(STD_OUTPUT_HANDLE);

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

  IsExistent = TRUE;
}

 void CConsole::Attach(SHORT ConsoleHeight, SHORT ConsoleWidth)
 {
 
  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;

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

}

DWORD CConsole::printf(CString message)
{
DWORD dwWritten=0;
  
    if(WriteConsole(hStd,message,message.GetLength(),&dwWritten,NULL))
        return dwWritten;
    return 0;
}

使用的时候产生对象后直接调用printf输出想要的调试信息即可

转载于:https://my.oschina.net/u/557274/blog/62576

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Eclipse 的控制台窗口可能因为多种原因不显示。你可以尝试以下操作来解决这个问题: 1. 重启 Eclipse 2. 检查窗口布局是否正确 3. 检查控制台视图是否被隐藏或关闭 4. 检查是否有控制台进程正在运行 如果以上操作都不起作用,请考虑重新安装 Eclipse 或联系技术支持。 ### 回答2: 当在Eclipse中打开一个Java程序,却发现控制台窗口没有任何输出时,这可能与几个因素有关。首先,要检查Eclipse中是否正确配置了控制台视图。 要打开控制台视图,请选择窗口菜单中的“显示视图”选项,然后选择“控制台”。或者,您可以按CTRL + 3,并输入“ console”或“terminal”来检索控制台视图。 如果控制台已打开,但是没有看到输出,则必须检查以下几点: 1. 您是否在程序中输出了任何内容?必须在您的Java代码中添加输出语句才能在控制台显示任何内容。 2. 程序是否已成功编译?如果代码包含错误,程序将无法编译并在控制台中显示任何输出。 3. 控制台窗口是否被最小化或关闭?检查一下控制台视图区域是否打开了,并查看视图区域属性是否显示有任何错误。 4. 检查Console视图设置。选中Console窗口右上角的三角形按钮,选择Console视图选项,确保“Limit console output”未选中,并且“Console buffer size”是足够大的,以便可以捕获输出内容。 5.如果Console视图面板隐藏在Eclipse工作区的底部,请拖动并调整大小,以确保视图的窗口尺寸合适。 6. 检查您的程序是否使用了Java交互式shell(JShell)。如果JShell正在运行,则控制台视图将暂时被禁用。 如果您仍然无法在Eclipse中查看控制台输出,请考虑重启Eclipse或在您的操作系统下重新启动计算机。 ### 回答3: Eclipse是一款常见的Java集成开发环境,如果Eclipse Console窗口无法显示,会给程序开发和调试带来很多麻烦。Eclipse console窗口显示的原因一般有以下几种: 1.控制台被关闭或最小化 这种情况下可以通过打开或最大化Eclipse控制台来解决。可以通过“Window”菜单下的“Show View”选项找到“Console窗口并打开,或通过Alt+Shift+Q,C来打开控制台。 2.配置错误 Eclipse console窗口的配置也可能出现问题。这种情况下,可以通过以下步骤检查和调整配置: (1)在Eclipse菜单中选择“Run”然后选择“Run Configuration”; (2)进入“Run Configuration”对话框并选择“Java Application”; (3)在右侧的“Main”选项卡中检查“Project”、“Main class”和“Arguments”等配置是否正确; (4)在“Common”选项卡中检查各项配置是否正确。 3.缺少可执行文件 如果没有可执行文件,控制台窗口将无法正常显示。因此,,在运行程序之前,必须确保在Eclipse中设置了有效的JDK和环境变量。可以通过以下步骤检查并设置Java路径: (1)在Eclipse菜单中选择“Window”,然后选择“Preferences”; (2)在弹出的对话框中选择“Java”; (3)选择“Installed JREs”选项卡并确认JRE是否存在; (4)选择“Execution Environments”并确认是否选择了正确的JRE。 以上是eclipse console窗口显示的几种情况及对应解决方案,希望对读者有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值