在MFC程序中增加控制台窗口

MFC程序中,如果想要输出调试信息,我们一般都是TRACE或者使用LOG文件,都不是很方便,第一个需要我们在调试状态下,第二个也要配置麻烦而且不直观。而使用Console来显示调试信息应该是更好的选择。下面介绍几种在MFC程序中,使用控制台来输出调试信息。

1. 我们可以自己创建一个命令行窗口,在主程序的初始化的时候调用AllocConsole()函数。相应的退出的时候调用FreeConsole()

 

复制代码
1 BOOL CMFCTestApp::InitInstance()
2 {
3 ...
4 #ifdef _DEBUG
5 AllocConsole();
6  #endif
7 ...
8 CWinApp::InitInstance();
9 }
复制代码

  此种方式下,输出函数需要使用_cprintf或者WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE)...),其他的如cout,printf都不能输出到这里。当然,你可以自己封装一套调试函数。

 

2. 修改工程的配置信息,一般控制程序类型的是通过这两/SUBSYSTEM:WINDOWS来配置的,这个可以在工程属性/Linker/System/Subsystem这里看到,我们可以通过修改程序为console类型来使得程序显示命令行,但直接修改这个属性会提示链接错误,原因是不同类型的程序有不同的程序入口。这里使用简单的方式,直接在stdafx.h中添加一句

 

1 #ifdef _DEBUG
2 #pragma comment( linker, "/subsystem:console /entry:wWinMainCRTStartup" )//我用VS2005
3 #endif

我们重新定义了系统类型和入口函数,这里面可以根据自己的需要任意组合。你可以参考你工程目前的属性信息,工程属性/Linker/Command Line,如下参考

 

#pragma comment( linker, "/subsystem:windows /entry:WinMainCRTStartup" )
#pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )

#pragma comment( linker, "/subsystem:console /entry:mainCRTStartup" )
#pragma comment( linker, "/subsystem:console /entry:WinMainCRTStartup" )

 

PS如何改变Win32 Console 程序显示颜色

复制代码
HANDLE hCon=GetStdHandle(STD_OUTPUT_HANDLE);
/*
STD_INPUT_HANDLE 标准输入的句柄 STD_OUTPUT_HANDLE 标准输出的句柄 STD_ERROR_HANDLE 标准错误的句柄
*/
SetConsoleTextAttribute(hCon,ForeColor
|BackGroundColor);
/*其文本与背景颜色可以是 FOREGROUND_BLUE, FOREGROUND_GREEN, FOREGROUND_RED, FOREGROUND_INTENSITY, BACKGROUND_BLUE, BACKGROUND_GREEN, BACKGROUND_RED, and BACKGROUND_INTENSITY*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510036.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kafka安全认证 SASL/PLAINTEXT,账号密码认证

环境 操作系统:CentOS 7.3 Kafka Version:1.1.1 Zookeeper Version:3.4.14 一、Zookeeper集群配置SASL zookeeper所有节点都是对等的,只是各个节点角色可能不相同。以下步骤所有的节点配置相同。 1、zoo.cfg文件配置 为zookeeper添加S…

预处理指令 #pragma 的使用

#pragma comment( comment-type [,"commentstring"] )该宏放置一个注释到对象文件或者可执行文件。comment-type是一个预定义的标识符,指定注释的类型,应该是compiler,exestr,lib,linker之一。commentstring…

Kafka ACL控制,用户权限能控制

本文章基于Kafka配置 SASL/PLAINTEXT后编写,如未配置请参考:https://datamining.blog.csdn.net/article/details/90264636 进行修改 配置kafka server.properties文件 super.users 指定超级用户,不受权限控制 listenersSASL_PLAINTEXT://ip…

ubuntu 系统U盘中 文件出现小锁子

1.插入不有问题的U盘,输入sudo fdisk -l指令,查看磁盘信息。 Disk /dev/sda: 57.6 GiB, 61872793600 bytes, 120845300 sectors Units: sectors of 1 * 512 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optim…

mysql配置

MySQL5.6.11安装步骤(Windows7 64位) http://jingyan.baidu.com/article/f3ad7d0ffc061a09c3345bf0.html1. 下载MySQL Community Server 5.6.21,注意选择系统类型(32位/64位) 2. 解压MySQL压缩包 将以下载的MySQL压缩包…

Kafka JMX监控报错 Failed to get broker metrics for BrokerIdentity(128,192.168.2.128,9999,true,false,Map

KafkaManager报错 2019-05-19 14:21:53,817 - [ERROR] k.m.a.c.BrokerViewCacheActor - Failed to get broker metrics for BrokerIdentity(128,192.168.2.128,9999,true,false,Map(SASL_PLAINTEXT -> 19092)) java.rmi.ConnectException: Connection refused to host: 127.…

大数据技术讲解

HDFS的体系架构 整个Hadoop的体系结构主要是通过HDFS来实现对分布式存储的底层支持,并通过MR来实现对分布式并行任务处理的程序支持。 HDFS采用主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode和若干个DataNode组…

mfc常见面试题

http://www.mianwww.com/html/2014/05/21208.html 理解c++语言中一些概念以及它们之间的区别(需要深刻理解): (1)局部变量全局变量静态变量 const常量寄存器变量宏定义的常量 static变量注&…

ubuntu16.04安装gcc g++7.5.0及各个版本的切换

sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt-get install gcc-7 sudo apt-get install g-7 出现以下错误: Reading package lists... Done Building dependency tree Reading state information... Done You mi…

eclipse闪退打不开问题

起初在网上看了N多篇的解决文章,可惜都试过了没有一个解决我的问题,后来就一顿折腾,把c盘中出现的 .eclipse(点eclipse)删除之后重新运行eclipse等待一会儿就可以正常启动了,通过这次警告自己以后不能异常…

掌握技能

掌握技能: 熟悉C/C语言,,熟悉常用的设计模式及设计原则; 熟悉常用的重构手法,有良好的编码风格; 熟练使用VS2010集成开发环境和SVN版本控制系统; 熟悉MFC、Qt库的使用; 熟悉C标准程序库STL以及常…

kafka manager 2.0 工具下载 已打包完成

链接:https://pan.baidu.com/s/1YMj-9HzoJLKDEY5C47aOlQ 提取码:hhhr

linux系统备份和恢复

系统备份: sudo su cd / tar cvpzf backup.tgz --exclude/proc --exclude/lostfound --exclude/backup.tgz --exclude/mnt --exclude/sys --exclude/media / 系统恢复: ctrl alt F1 输入用户名和密码 cd / sudo tar xvpfz backup.tgz

多线程Runnable类创建多线程

package com.ajax; //多线程Runnable类创建多线程 public class Example01 {public static void main(String [] args){TicketWindow twnew TicketWindow();new Thread(tw,"窗口1").start();new Thread(tw,"窗口2").start();new Thread(tw,"窗口3&quo…

LPTSTR、LPCSTR、LPCTSTR、LPSTR的区别

UNICODE:它是用两个字节表示一个字符的方法。比如字符A在ASCII下面是一个字符,可A在UNICODE下面是两个字符,高字符用0填充,而且汉字程在ASCII下面是两个字节,而在UNICODE下仍旧是两个字节。UNICODE的用处就是定长表示世界文字&…

Hbase快照Snapshot 数据备份、恢复与迁移

场景 hbase数据迁移时我们需要统计迁移时的数据量,以确保迁移后的数据的完成,但是如果hbase表数据持续增加的话,迁移时无法统计出准确的数据量,此时我们使用快照的方式进行数据迁移,以确保迁移的数量可以和某一时间节点…

多线程Thread类创建多线程

package com.ajax; //多线程Thread类创建多线程 public class Example02 {public static void main(String[] args){new MyThread().start();new MyThread().start();new MyThread().start();//创建一个线程对象并开启new MyThread().start();} } class MyThread extends Threa…

C++面试题一

指针和引用的区别指针指向一块内存,它的内容是指向内存的地址;引用是某内存的别名 引用使用是无需解引用,指针需解引用 引用不能为空,指针可以为空 引用在定义是被初始化一次,之后不可变;指针可变 程序…

maven 打包报错 surefire-reports for the individual test results.

Eclipse Maven打包报错 [ERROR] [ERROR] Please refer to D:\File\workspace\izh-common-util\target\surefire-reports for the individual test results. [ERROR] -> [Help 1] [ERROR] 原因这是因为测试代码时遇到错误,它会停止编译。 解决方法 在pom.xm…

ubuntu 配置 静态ip

1.参看网卡名称 ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:65536 Metric:1RX packets:10210 errors:0 dropped:0 overruns:0 frame:0TX packets:10210 errors:0 dropped:…