DEBUGMSG - [Daliy APIs]

DEBUGMSG 

 

该宏用于有条件地输出调试信息  

原型: 

   DEBUGMSG (Condition, Printf_expr)

说明: 

   第一个参数为布尔值,决定消息是否被输出。TRUE:输出,FALSE:不输出。

   第二个参数类似于printf函数。注意:该参数必须括在括号中 。参数将被传递到 NKDbgPrintf 函数中。

   在Wince或WM开发中要记住,DEBUGMSG的第二个参数的格式控制(Format control)为UNICODE字符,也就是下面例子中被TEXT包含的部分,它的形式类似于printf传参的形式。

 

下面是MSDN上的例子:

  1. DEBUGMSG(TRUE, (TEXT("Testing item count against maximum %u\r\n"), 
  2.          dwMaxNumberOfItems));
  3. DEBUGMSG(dwCurrentNumberOfItems >= dwMaxNumberOfItems,
  4.          (TEXT("Invalid item count! Found %u, expected less than %u\r\n"),
  5.          dwCurrentNumberOfItems, dwMaxNumberOfItems));

输出为:

  Testing item count against maximum 68

  Invalid item countFound 343, expected less than 68  

 

再看看下面这个例子:

  1. char szOut[] = "Hello, DEBUGMSG";
  2. DEBUGMSG(TRUE, (TEXT("%s\n"), szOut));

输出为:

Ч›HⱯ䐠䉅䝕…d\uc1G  

 

发现输出的为乱码,这是为什么呢? 因为格式控制为UNICODE字符,所以传入的字符或字符串型条件参数也要为UNICODE字符,如下:

  1. TCHAR szWOut[20] = {0};
  2. MultiByteToWideChar(CP_ACP, 0, szOut, -1, szWOut, 20);
  3. DEBUGMSG(TRUE, (TEXT("%s\n"), szWOut));

输出为:

Hello, DEBUGMSG 

一切都正确了。

 

Good Luck! 

 

 

posted on 2010-01-14 20:09  listenlisten  阅读(1108)  评论(1编辑  收藏  举报

导航