您的位置:首页 > 其它

_vsnprintf()的一个问题

2012-12-09 10:17 591 查看
最近在看《Windows程序设计(第五版)》 程序2-1 写下来不能运行

#include<Windows.h>
#include<tchar.h>
#include<stdio.h>

int CDECL MessageBoxPrintf(TCHAR *szCaption,TCHAR *szFormat,...){
TCHAR szBuffer[1024];
va_list pArgList;
va_start(pArgList,szFormat);
_vsnprintf(szBuffer,sizeof(szBuffer)/sizeof(TCHAR),szFormat,pArgList);
va_end(pArgList);
return MessageBox(NULL,szBuffer,szCaption,0);
}

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iShowCmd){
int cxScreen,cyScreen;
cxScreen = GetSystemMetrics (SM_CXSCREEN);
cyScreen = GetSystemMetrics (SM_CYSCREEN);
MessageBoxPrintf(TEXT("Scrnsize"),TEXT("The Screen is i% pixels wide by i% pixels high"),cxScreen,cyScreen);
return 0;
}


说_vsnprintf()的第一个参数TCHAR *和char *不兼容,不过书上说TCHAR 在有Unicode的时候会变成w_char,否则就是char

TCHAR *难道和 char *不是一个道理吗?

 想不通

----------------------------------------------------------------------------------------华丽的分割线-----------------------------------------------------------------------------------------------------------------------------

原来是我傻X了,_vsnprintf()和_vsntprintf()是两个函数,一个是处理char的 一个是处理TCHAR的。大家注意就好~~

可是貌似并没有格式化我的输出,不知道是不是我又傻了

输出是:

The screen is i00000566ixels wide by i00000300ixels high
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Windows程序设计