C语言console模式中有printf函数非常方便, 但在win32程序中的输出就有点麻烦了,用MessageBox,AfxMessageBox这些函数输出都不好,总是要点确定,我们可以用OutputDebugString函数输出到调式器中,如dbgview.再结合一些字符串的函数就可以当printf使用了,但还是不够方便.如使用时还得申请空间.于是就自己写了个printf
要使用的宏:
va_list: 声明一个可变参数集
va_arg( va_list arg_ptr, type );//从arg_ptr中取得一个类型为type的数据
void va_end( va_list arg_ptr );//结束
void va_start( va_list arg_ptr, prev_param ); //开始解析arg_ptr
Debug.h文件中:
#ifndef _MYDEBUG_ #define _MYDEBUG_ #include "windows.h" #include "stdio.h" #include <stdarg.h> #include <string.h> class CMyDebug { protected: //要输出的字符缓冲区 static char buf[10240]; public: static void Print(const char* str,...) { int k=0;//str的索引 int i=0;//buf的索引 unsigned char c = *(str+k); va_list var; va_start(var,str); while(c!='\0') { unsigned char c1=*(str+k+1); if(c=='%') { if(c1=='c')//字符 { char t = va_arg(var,char); buf[i++]=t; k+=2; } else if(c1=='d')//数字 { int t = va_arg(var,int); char b[10]; itoa(t,(char*)b,10); memcpy((void*)(buf+i),b,strlen((char*)b)); i+=strlen((char*)b); k+=2; } else if(c1=='s')//字符串 { char* t = va_arg(var,char*); int l = strlen(t); memcpy((void*)(buf+i),(const void*)t,l); i+=l; k+=2; } else { buf[i++]=c; k++; } } else { buf[i++]=c; k++; } c=*(str+k); } va_end(var); buf[i]=0; OutputDebugString((char*)buf); } }; #endif
Debug.cpp文件中
#include "Debug.h" char CMyDebug::buf[]={0};
使用:
CMyDebug::Print("ddaaa=%c,str=%s\n",'t',"**sdfsfsdfsdfasf");
这个函数只能包含%c,%d,%s,还不完善,到用到时再写吧,还应该有其他更简单的方法可以实现.
发表评论
-
游戏工作资料
2014-02-17 10:34 0c -
游戏 压力测试工具
2014-02-14 18:16 0公司让我为游戏做个 压力测试工具 ... -
java游戏 地图编辑器
2014-01-08 15:52 0无聊之余,做了个地图编辑器,根据一张地图图片,生成它的 ... -
java游戏小框架学习笔记
2014-01-08 10:45 01.AVGScript类中怎么触发 ... -
游戏编程中的寻路算法
2013-12-26 17:40 0在游戏关卡中常常会放置一些怪物(即NPC),这些怪物通常在一 ... -
UDK自定义角色(二)
2013-03-11 15:31 0对比UTFamilyInfo_Liandri_Male.u ... -
在udk中整合动画组的两种方式
2013-03-11 12:35 01.使用udk原始psk文件格式 前提,udk的坐标轴要 ... -
在udk中测试动画
2013-03-11 10:42 0在内容浏览器中选中animSet 在地图 ... -
udk开发工具
2013-01-29 11:13 0notepad++插件 UnrealScript.xml ... -
第14节 udk学习之坦克前进声音与背景音乐
2013-01-15 15:50 0在udk中建立cue资源,导入wav声音,再到代码中修改 ... -
java俄罗斯方块
2013-01-02 11:50 861做个俄罗斯方块游戏 packag ... -
udk学习之武器准心
2012-12-05 12:16 0给武器瞄准点加上准心,如图 准心资源 ... -
udk相关软件、插件下载
2012-11-26 09:32 0photoshop的dds插件:http://dl.ite ... -
第13节 UDK载具之炮弹
2012-11-16 21:54 0继承UTProjectile类 class Tan ... -
第12节 UDK学习 载具之炮筒(2)
2012-11-13 18:05 0这节学习炮塔随像机的转动而转动。 首先要取得像机的角度 ... -
第12节 UDK载具之炮筒
2012-11-11 11:41 0这节学习如何给车装上武器(已经提供了武器模型) 1.添加放 ... -
第11节 UDK学习之第三人称视角
2012-11-10 23:33 0这节做一个第三人称视角,鼠标左右前后移动与第一人称无差别,通 ... -
第10节 udk学习之自定义载具(2)
2012-11-10 21:23 01.骨骼风格物体与动画 ... -
第九节 UDK学习之自定义角色之 (三)
2012-10-17 16:30 0高手都盾世了吗,udk社区太不厚道了,看篇文章要钱,下个资源要 ... -
第八节 udk学习之自定义角色 二
2012-10-14 18:49 0首先墨迹一下: 要 ...
相关推荐
简介:这是VC2010 MFC(vs2005、VC6.0也可以)中实现printf调试功能,即MFC程序利用控制台输出调试信息的详细页面,介绍了和服务器,有关的知识、技巧、经验,和一些服务器源码等。
例如,图像坐标点由Win16中的16位值变为Win32中的32位值。此外,某些Win16函数呼叫返回一个包含在32位整数值中的二维坐标点。这在Win32中不可能,因此增加的新函数呼叫以不同方式运作。 所有32位版本的Windows都...
在《Window程序设计》(第5版)中,这位杰出的“Windows先锋奖”(Windows Pioneer Award)获得者根据最新的Windows操作系统权威技术修订了他的经典著作——再一次演示了基本的Win32程序设计的API核心内容。...
但有些时候,可能在程序的运行过程中,某个分支根本不会执行。 比如我们要写一个跨平台项目,要求项目既能在Windows下运行,也能在Linux下运行。这个时候,如果我们使用if-else,如下: Windows 有专有的宏_WIN32,...
拦截WIN32 API调用,将其引导到自己的子程序,从而实现WIN32 API的定制。 为一个已在运行的进程创建一新线程,装入自己的代码并运行。 ---- 本文将简介Detours的原理,Detours库函数的用法, 并利用Detours库函数...
拦截WIN32 API调用,将其引导到自己的子程序,从而实现WIN32 API的定制。 为一个已在运行的进程创建一新线程,装入自己的代码并运行。 ---- 本文将简介Detours的原理,Detours库函数的用法, 并利用Detours库函数...
一个进程池的服务器程序 下面做了非常简单的http服务器,该服务器只能接收Get请求。 流程大概如下: 1,父进程listen,创建pipe(下面所有父子进程之间的通信都用该pipe) 2,父进程预fork n个子进程 3,各个子...
MinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环 境,它是Minimalist GNU on Windows的略称。这里的“纯粹”是指「使用msvcrt.dll的应用程序」。无法使用MFC (Microsoft Foundation Classes微软基础...
本文实例展示了Windows网络编程中winsock实现文件传输的方法,对于进行Windows下的winsock网络编程有一定的借鉴参考价值。 该程序代码主要是基于TCP流协议的winsock网络文件传输示例,采用Windows下的C语言编写。...
#define WIN32_LEAN_AND_MEAN #include #include #include #include #include #define OICQ_MAX_PACKET 1024 #define OICQ_MAX_MSG 512 #define OICQ_MSG_LEN 45 #...
win-tc下的,修改下可以在vc下运行,是c语言编写的 #include "stdio.h" /*标准输入输出函数库*/ #include "stdlib.h" /*标准函数库*/ #include "string.h" /*字符串函数库*/ #include "conio.h" /*屏幕操作函数库*/ ...
1.c 2.c a.out b.c git win 模板 图片 下载 桌面 便想着实现对齐,想到了c的格式化输出: printf(%-10s,s); 这样便实现了将字符串s占10格居左输出. 但却由一个难以解决的问题,上述的 10 不能提前预支,是程序运行...
什么是FreeTDS 简单的说FreeTDS是一个程序库,可以实现在Linux系统下访问微软的SQL数据库! FreeTDS 是一个开源(如果你喜欢可以称为...意味着Unix和类Unix系统(包括著名的分支如Interix和QNX),还有Win32,VMS,和O
在这个程序中,我的主要思路以及思想是这样的: 1)解决冲突问题: 这个问题包括了行,列,两条对角线; 列:规定每一列放一个皇后,不会造成列上的冲突; 行:当第I行被某个皇后占领后,则同一行上的所有空格都...
34.zip Doing Excel Automation witch MSVC 在VC中实现Excel自动化(9KB)<END><br>35,35.zip High Resolution Timing 高精度的时间处理(5KB)<END><br>36,36.zip Using Timers in MFC Applications ...