一个简单的将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

实战派指南:反激电源EMI滤波器设计,从理论计算到PCB布局避坑

本文详细解析了反激式开关电源EMI滤波器设计的全流程,从理论计算到PCB布局避坑,结合34W PD快充电源案例,系统介绍了共模与差模干扰的识别、关键元件选型、参数计算优化及PCB布局技巧,帮助工程师有效解决传导测试超标等常见问题。

weixin_29230805的博客 373

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

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

weixin_33841503的博客 456

OneNet新版MQTT+OneJSON接入全指南

物联网云平台设备接入是嵌入式系统与云端协同的基础能力,其核心依赖于标准化通信协议与统一数据模型。MQTT作为轻量级发布/订阅协议,凭借低带宽占用和高可靠性,成为边缘设备上云的主流选择;而物模型(Thing Model)则定义了设备能力的数字契约,支撑数据语义化与平台自治管理。OneNet新版强制采用MQTT+OneJSON协议栈,不仅提升数据解析一致性与安全认证强度,更推动开发范式从‘协议适配’转向‘模型驱动’。该架构广泛适用于环境监测、智能表计、工业传感等场景,尤其利好基于ESP8266、STM32等资源

weixin_42599558的博客 359

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

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

weixin_30512043的博客 329

解决VM 与 Device/Credential Guard 不兼容。在禁用 Device/Credential Guard 后,可以运行 VM 的方法

在启用了Credential Guard或Device Guard的Windows 10主机上启动12.5版之前的VMware Workstation中的虚拟机时,将显示蓝色诊断屏幕(BSOD)。 会看到类似于以下内容的错误: VMware Workstation和Device / Credential Guard不兼容。禁用Device / Credential Guard后,可以运行VMwar...

Hern(宋兆恒) 39万+

计算机视觉:相机模型与参数标定

一、相机投影模型 1、小孔成像 2、相机模型中的四个平面坐标系 3、像主点偏移 4、畸变现象与内参矩阵 5、外参矩阵 二、相机标定:张正友棋盘格标定法 1、张正友棋盘格标定法描述 2、计算外参和内参 2.1 计算单应性矩阵H 2.2 计算内参数矩阵 2.3 计算外参数矩阵 3、实验:MATLAB实现 3.1 实验数据 3.2实验过程 3.3 实验结果 4、实验:OpenCV实现 4.1 实现代码 4.2 实验结果 5、实验分析与总结

DreamWendy的博客 2514

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

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

weixin_34348174的博客 443

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(二)

《拉依达的嵌入式\驱动面试宝典》 整合了所有我认为可能遇到的技术面试问题。所有问题及其答案均是我个人学习后查阅资料总结,每个回答都做了仔细的分析,在嵌入式及其驱动面试相关问题解析做到全网独一无二。学习或者转行到嵌入式、驱动开发领域学习的不二之选

拉依达不拉跨的博客 575

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

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

weixin_30240349的博客 382

思维链:让AI更接近人类思维的技术

本文将探讨一种名为“思维链”的技术,它旨在让AI更接近人类思维。文章首先介绍了问题背景与核心概念,接着讲解了算法原理和数学模型,随后阐述了系统分析与架构设计,最后通过项目实战展示了思维链的实际应用,并提供了最佳实践和小结。思维链是一种旨在模拟人类思维过程的技术,它通过构建一系列相互关联的思维方式,实现对复杂问题的分析和解决。思维链算法是一种基于人类思维过程的人工智能算法,它通过构建一系列思维链,实现对问题的分析和解决。智能问答系统是一种常见的人工智能应用,它能够回答用户提出的各种问题。

AI天才研究院 942

iqoo11如何获取root权限?

🏆本文收录于专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家!持续更新中,up!up!up!!

**My Coding Family** 5809

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

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

weixin_30746117的博客 4016

单片机应用案例:ESP32 搭配 BH1750 光强传感器和 Web 服务器

在该应用案例中,我们将使用 ESP32 开发板作为主控制器,BH1750 光强传感器用于采集环境光强度数据,并通过 Web 服务器展示采集到的数据。步骤一:购买材料步骤二:连接硬件步骤三:编写代码我们将使用 Arduino IDE 编写代码,以下是主要代码:// WiFi 设置const char* ssid = “你的 WiFi 名称”;const char* password = “密码”;// Web 服务器实例// BH1750 实例// 获取当前光强度数据。

RlDart的博客 812

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

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

weixin_30329623的博客 576

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

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

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

weixin_30598225的博客 400

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值