一个简单的将GUI程序的log信息输出到关联的Console窗口中

使用AllocConsole在Win32窗口(GUI)程序中调用控制台调试输出 众所周知,Win32GUI程序默认不能使用调试窗口打印日志信息,那么,如何方便地在Win32GUI程序中使用控制台进行调试输出?答案如题:AllocConsole函数和C-Runtime的freopen函数。其中"CONOUT$"是指代当前console的特殊字符串,"w"表明以written模式打开这个console,stdout指代标准输出流。可重定向的流有:标准输入流、标准输出流或者标准错误流。AllocConsole函数的功能是为当前的窗口程序申请一个Console窗口,其原型为。 阅读详情
// .h 文件
#pragma once
class CConsoleDump
{
public:
	explicit CConsoleDump(LPCTSTR lpszWindowTitle = NULL);
	virtual ~CConsoleDump(void);

public:
	BOOL DUMP(LPCTSTR lpszFmt, ...);
	BOOL ShowWindow(BOOL bShowWindow);
	BOOL SetWindowText(LPCTSTR lpszWindowTitle = NULL);
};

// .cpp文件
#include "StdAfx.h"
#include "ConsoleDump.h"

#define MAX_BUFFER_SIZE (10 * 1024)

CConsoleDump::CConsoleDump(LPCTSTR lpszWindowTitle)
{
	if(AllocConsole())
	{
		if(NULL != lpszWindowTitle)
		{
			SetConsoleTitle(lpszWindowTitle);
		}
	}
}

CConsoleDump::~CConsoleDump(void)
{
	FreeConsole();
}

BOOL CConsoleDump::ShowWindow(BOOL bShowWindow)
{
	return ::ShowWindow(GetConsoleWindow(), bShowWindow ? SW_SHOW : SW_HIDE);
}

BOOL SetWindowText(LPCTSTR lpszWindowTitle)
{
	if(NULL != lpszWindowTitle)
	{
		return SetConsoleTitle(lpszWindowTitle);
	}
	return TRUE;
}

BOOL CConsoleDump::DUMP(LPCTSTR lpszFmt, ...)
{
	TCHAR szText[MAX_BUFFER_SIZE] = {0};

	va_list arglist;
	va_start(arglist, lpszFmt);
	_vstprintf_s(szText, _countof(szText), lpszFmt, arglist);
	va_end(arglist);

	return WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), szText, _tcslen(szText), NULL, NULL);
}

// 测试使用
CConsoleDump m_dump; // 定义为类的成员变量
// 需要的地方利用CConsoleDump::DUMP函数输出log信息即可
m_dump.DUMP(_T("Hello, World!\r\n"));

这只是个简单的封装了Console相关的几个函数,关于更多的Console相关的控制,可以参考MSDN文档中的
Unity界面核心窗口解析与高效工作流实战指南 在游戏开发与交互应用构建中,集成开发环境(IDE)的界面布局与工作流设计是影响开发效率的核心因素。其原理在于通过模块化窗口将资源管理、场景编辑、对象检视与实时预览等功能有机串联,形成可视化创作管线。掌握这套逻辑的技术价值在于,开发者能将认知负荷从软件操作转移到创意实现上,显著提升原型迭代与复杂系统构建的速度。无论是独立游戏、AR/VR应用,还是建筑可视化与工业仿真,高效的工作流都是项目成功的基石。本文以Unity引擎为例,深入解析其Scene、Hierarchy、Project、Inspector及Game 阅读详情

相关推荐

程序员的纯文本日志实践:programming.log 工作流

编程日志(programming log)是一种面向开发者思维过程的技术记录方式,其核心在于用最简化的纯文本格式,实现低认知负荷、高可追溯性的技术反思与知识沉淀。它基于时间线性结构而非标签分类,依托 Unix 工具链(grep/vim/git)达成零依赖、抗格式腐烂、跨平台一致的工程可靠性。相比传统笔记工具,它更强调‘记录即思考’的即时性与真实性,天然适配调试复盘、架构决策、代码审查等高频开发场景。作为 developer journal 的轻量级实现,它不替代文档系统,而是补全了从代码提交到思维留痕之间的

rongdmmap的博客 390

c++ 高级打印调试技巧

1、打印到debugview 使用api OutputDebugString,可以打印到debugview 中,在debug中可以使用过滤来过滤所要的打印的内容,我们在所有的条件中加上打印的level static void OutMessage(const char * level,const char * fmt, ...) { #ifdef _WIN32 va_list args; va_start(args, fmt); //char *buf = new char[10240]; char

qianbo042311的博客 1930

程序员的编程日志(Programming Log):一种认知资产管理实践

编程日志(Programming Log)是一种面向开发者个人认知沉淀的技术记录范式,其核心原理是将隐性经验结构化为可检索、可复用、可追溯的知识资产。不同于传统技术博客的知识传播导向,它强调以‘未来自己’为唯一用户,通过原子日志、概念沉淀、代码片段与决策图谱四层结构,对抗遗忘曲线并支撑技术判断。其技术价值在于将调试过程、架构权衡、线上故障等真实场景中的碎片洞察,转化为可持续复利的认知资本。典型应用场景包括:高频问题快速回溯、团队级经验复用、故障复盘标准化、技术选型历史校准。本文聚焦于programming

aobai7842的博客 340

`AllocConsole` 函数 通过控制台实时看printf日志

只能在Windows控制台应用程序或带有UI的应用程序中使用。它在纯粹的图形应用程序中不起作用。函数来获取标准输入和输出的句柄,以便进行文本输入和输出。函数用于创建一个控制台窗口,然后使用。函数来关闭控制台窗口。

chenhao0568的专栏 1169

WSL GUI管理:Playwright自动化与X11调试实战指南

图形用户界面(GUI)在Linux子系统(WSL)中并非开箱即用,其本质是X11或Wayland协议在Windows主机与WSL虚拟环境之间的跨平台桥接问题。理解协议层、网络栈和进程模型三重割裂,是解决Chromium黑屏、Playwright启动失败、截图为空等典型故障的前提。技术价值在于构建可预测、可调试、可复现的GUI运行时基础设施,支撑自动化测试、Qt开发与协议分析等工程场景。本文聚焦WSLg与VcXsrv双路径选型、DISPLAY连接验证、GPU渲染避坑及xdotool窗口生命周期控制,覆盖从基础

cuixie2370的博客 370

ROS 2图形化日志查看器rqt_console:从原理到实战的高效调试指南

在机器人操作系统(ROS)开发中,日志是诊断系统状态的核心依据。传统的终端日志输出方式存在信息混杂、难以回溯和过滤的痛点,尤其在多节点、分布式系统中,关键的错误(ERROR)或警告(WARN)信息极易被淹没。图形化日志查看工具通过引入消息持久化、结构化过滤和可视化标识等原理,实现了日志管理的范式转变,其技术价值在于将枯燥的日志分析提升为高效的策略性侦查工作。这类工具在机器人软件调试、系统状态监控和问题根因定位等应用场景中至关重要。本文聚焦于ROS 2生态中的rqt_console,它作为一个被动的、强大的图

weixin_30647423的博客 297

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

一、AllocConsole 函数 为调用进程分配一个新的控制台。 使用步骤: 1. AllocConsole();//分配控制台 2. HANDLE g_hOutput=GetStdHandle(STD_OUTPUT_HANDLE );//获取标准输出设备句柄 3. WriteConsole(g_hOupput,lpBuffer,lpNumberofcharswritten,lpRes

IT- 研究者 5275

Angular Console:可视化 schematics 运行时与 CLI 工程化中枢

Angular Console 是 Angular CLI 的可视化增强层,本质是面向 schematics 的 GUI 运行时,将命令行中隐式的代码生成逻辑(如 ng generate)转化为可观察、可调试、可复用的显性工作流。它基于 TypeScript AST 解析与沙箱化执行机制,确保文件修改语法安全、参数配置零出错,并深度集成 VS Code 实现编辑器内闭环开发。技术价值在于降低团队协作门槛、提升 schematics 可维护性、统一多包管理器(pnpm/yarn/npm)下的配置治理。典型应用

weixin_33885676的博客 376

MFC调用DOS窗口显示信息

AllocConsole Function 为主调进程分配一个新的控制台。语法 C++ :BOOL WINAPI AllocConsole(void);参数:无返回值 :如果函数成功,返回值是非零值;如果函数失败,返回值是零值。备注:一个进程仅能关联一个控制台,所以该函数在主调进程已经具有控制台时将会失败。一个进程可以使用 Fr...

weixin_30401605的博客 454

Python Tkinter实战:构建树莓派数据记录器GUI应用

图形用户界面(GUI)是连接用户与后台程序的关键桥梁,它将复杂的命令行操作转化为直观的视觉交互。其核心原理在于事件驱动模型,通过响应用户输入来触发相应的业务逻辑。在Python生态中,Tkinter作为标准库自带的GUI工具包,以其轻量、跨平台和易上手的特性,为快速开发小型桌面工具提供了高效解决方案。尤其适用于物联网、数据采集等场景,例如在树莓派项目中构建传感器数据监控面板。通过合理运用多线程和队列机制,可以实现GUI与数据记录等后端任务的解耦,确保界面流畅响应。本文以数据记录器为例,深入解析Tkinter

dengyulong的专栏 460

Mac上IDEA的PlantUML插件报错‘找不到Graphviz’?手把手教你用Homebrew搞定(附阿里云镜像避坑)

本文详细解决了Mac上IDEA的PlantUML插件报错‘找不到Graphviz’的问题,通过Homebrew安装Graphviz并配置阿里云镜像源,特别针对Apple Silicon芯片用户提供了优化方案。文章还涵盖了IDEA中PlantUML插件的正确配置和常见问题排查,帮助开发者高效使用PlantUML进行UML图表设计。

weixin_42619742的博客 468

Wireshark协议解析器调试指南:日志输出与专家信息实战

协议解析是网络数据包分析的核心技术,它将原始二进制数据流转换为可读的协议字段结构。其工作原理是通过解析器逐字节读取数据包,根据协议规范识别字段边界和语义。掌握协议解析技术对于网络调试、安全分析和协议开发具有重要价值,能够帮助工程师深入理解网络通信细节。在实际应用中,调试解析器逻辑是常见需求,特别是在处理私有协议或分析未知流量时。本文聚焦于Wireshark环境下的解析器调试,详细介绍如何利用日志输出和专家信息两大工具,通过配置控制台输出、集成专家信息字段和实现实时重载等工程实践方法,快速定位解析逻辑问题,提

weixin_33841503的博客 456

基于ESP32-C3的便携式血氧仪硬件与算法实现

血氧饱和度(SpO₂)监测是生理参数无创检测的核心技术之一,其原理基于光电容积脉搏波(PPG)信号中红光与红外光吸收比值的动态变化。该技术依赖高精度模拟前端、稳定光学激励及实时数字信号处理能力,在消费级健康设备中面临功耗、体积与测量鲁棒性的多重约束。ESP32-C3凭借集成LEDC、12位ADC与低功耗双核架构,成为PPG终端的理想主控平台;结合定制化指夹式光学探头与比率法血氧算法,可实现非诊断级但趋势可靠的日常健康监测。本文围绕硬件电路设计、电源管理策略与嵌入式信号处理流程展开,覆盖从LED驱动、跨阻放大

weixin_29025501的博客 132

ROS 2 日志调试神器:rqt_console 可视化分析实战指南

日志是 ROS 2 系统运行状态的核心反馈机制,本质是带时间戳、等级、节点名和元数据的结构化事件流,而非终端文本回显。其原理基于 rclcpp/rclpy 内置的日志后端异步发布机制,支持纳秒级时序追踪与跨进程捕获。技术价值在于突破命令行日志的时间断裂、信噪混杂与上下文缺失三大瓶颈,提供实时过滤、正则高亮、上下文展开及离线回放能力。典型应用场景包括节点通信异常定位、状态流转验证、多节点时序对齐及教学可视化。本文聚焦 rqt_console 这一关键 GUI 工具,结合 turtlesim 碰撞故障复现,详解

weixin_30512043的博客 329

Valeo近场数据集:多模态行人意图检测技术解析

行人意图检测是智能驾驶系统的关键技术,通过分析行人运动轨迹预测其行为意图。传统方法受限于单传感器数据,难以应对复杂场景。多模态融合技术结合视觉、LiDAR和惯性测量数据,显著提升检测精度。Valeo近场数据集(VNF)创新性地采用鱼眼相机、多LiDAR和动作捕捉系统,实现3D姿态与意图标签的精准对齐。该数据集支持开发距离自适应的行人感知算法,在ADAS防碰撞、智能迎宾等场景具有重要应用价值。关键技术包括传感器同步、3D姿态重建和时空图卷积网络,为行业提供了标准化评估基准。

weixin_30566111的博客 659

人形机器人电源系统硬件开发:从原理图设计到PCB布局的完整流程

人形机器人是“移动的智能终端”,其电源系统如同“心脏+血管”:既要为大脑(主控)、肌肉(电机)、感官(传感器)提供稳定能量,又要在有限体积内应对高动态负载(如跳跃时电机瞬间大电流)。本文聚焦“硬件开发”维度,覆盖从需求分析到PCB制板的完整流程,适合硬件工程师、机器人爱好者快速掌握工程实战方法。

AI天才研究院 2173

ROS 2 日志调试神器:rqt_console 实用指南

日志是 ROS 2 系统可观测性的核心入口,其本质是结构化的时间序列事件流。理解日志级别(INFO/WARN/ERROR)、时间戳对齐、跨节点时序关联等原理,是定位分布式系统异常的基础能力。rqt_console 通过自动暂停、多级过滤、正则高亮和统一时间轴等设计,将原始日志转化为可回溯、可筛选、可存档的工程化分析界面,显著提升调试效率。它特别适用于 turtlesim 等初学者场景,也支撑 TF 同步、碰撞检测、参数加载失败等典型问题排查,是 ROS 2 CLI 工具链中不可或缺的日志中枢。

weixin_34348174的博客 443

【硬刚Hadoop】HADOOP MAPREDUCE(1):概述

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的Hadoop部分补充。 1 MapReduce定义 MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。 MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。 2MapReduce优缺点 2.1 优点 1)MapReduce易于编程 它简单的实现一些接口,就可以完成一个分布式程序..

微信搜:import_bigdata,大数据领域硬核原创作者 462

ROS调试核心:rqt_console与roslaunch协同调试实战指南

ROS调试不是简单查看日志或启动节点,而是围绕节点生命周期、日志流控制和启动配置可复现性构建的系统性工程能力。rqt_console作为结构化日志中枢,依托rosgraph_msgs/Log消息提供带调用栈、文件行号和精确时间戳的日志可视化;roslaunch则本质是声明式节点拓扑编排器,通过<param>、<remap>和output策略实现硬件适配与行为固化。二者协同可解决节点崩溃无迹可寻、多节点资源竞争、环境变量污染等典型产线问题,支撑从实验室demo到工业级AGV底盘的可维护调试工作流。

weixin_30240349的博客 382

【Settings随记:二】一级菜单,二级菜单的添加与隐藏,添加辅助功能

首先会去调用父类的onCreatePreferences(Bundle savedInstanceState, String rootKey)方法,然后调用addPreferencesFromResource(R.xml.assistant_function)方法(这个方法是父类的)加载二级菜单的xml配置文件,实现创建二级菜单,这个配置文件路径在res/xml/assistant_function.xml。controller:该item的控制器,控制它的内容展示,是否可用,也可以控制它的点击事件等。

镇元子的博客 1594

第十六篇:Camx IFE 、OPE 各 port口功能定义

需要注意的是,类似 CSLTFEPortIdRawDump 是没有downscale功能的,所以如果遇到fov不正确的问题,可以排除下TFE这边的 output port是否被接到了 CSLTFEPortIdRawDump 上面来。我们知道Camx 的IFE 、OPE有不少的output port,各个port是有哪些功能的呢?老一点的框架平台,采用的TEF、OPE。

231

如何在DLL中打印信息到控制台

在C/C++实现的动态链接库中,如果需要向控制台打印调试信息,根据具体情况,可能需要做处理: Invoker调用者: 调用者没有控制台 调用者有控制台 Dll动态链接库: 使用调用者的控制台 使用自己的控制台 动态链接库如果想使用调用者的控制台: 采用AttachConsole可以将调用者进程控制台IO attach到指定的进程控制台上,然后就可以使用Co...

weixin_30746117的博客 4016

YOLOv8改进,YOLOv8添加DCNv4可变性卷积(windows系统成功编译),全网最详细教程

DCNv4通过两项关键增强解决了其前身DCNv3的局限性:1. 移除空间聚合中的softmax归一化,以增强其动态特性和表达能力;2. 优化内存访问以最小化冗余操作,从而加速计算。这些改进使得DCNv4相比DCNv3显著加快了收敛速度,并且处理速度大幅提升,前向传播速度超过三倍。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 6468

ROS2调试入门:rqt_console日志可视化原理与实战

ROS2日志系统是理解节点运行状态的核心可观测性基础,其基于rcl_interfaces/msg/Log消息类型构建统一日志通道,通过/ rosout话题实现跨语言(C++/Python)结构化发布。rqt_console作为官方推荐的图形化日志前端,不侵入节点代码,仅以订阅者身份实时消费该话题,提供按等级、节点、时间、源码位置的多维过滤与高亮能力。它将分散的printf式输出升维为可追溯、可关联、可跳转的调试证据链,在机器人开发中支撑故障定位、时序分析与初始化验证等关键场景,是ROS2开发者建立运行时直觉

weixin_30329623的博客 576

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

ROS2日志调试利器:rqt_console可视化监控实战指南

在ROS2分布式系统中,日志是理解节点行为与系统状态的核心可观测性手段。rqt_console并非简单终端替代品,而是基于/rosout话题、集成日志等级过滤、正则匹配与节点分组的结构化日志中枢,直接对接rclcpp/rclpy日志后端,提供带时间戳、节点名、文件行号等元数据的实时可视化流。其技术价值在于显著降低多节点协同调试的认知负荷,支撑从开发验证、故障定位到性能分析的全周期工程实践。典型应用场景包括自动驾驶中间件调试、机器人SLAM异常捕获及跨主机分布式日志监控——尤其适配ROS2 Humble/Fo

weixin_30598225的博客 400

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: ReadDirectoryChangesW 监控文件夹 (一个简单的监控示例程序)
下一篇: 一个简单的以User权限启动外部应用程序
Eleven
博客等级 码龄19年 4918粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值