Windows 程序设计(第五版)格式化消息框例程

Windows 程序设计(第五版)
在测试本书第34页的程序时出现了这个问题:
在这里插入图片描述

严重性	   代码	     说明	                                                项目	     文件	                        
错误(活动)	E0167	"const wchar_t *" 类型的实参与 "TCHAR *" 类型的形参不兼容	Project12	D:\Users\csq\source\repos\Project12\Project12\WINDOWS.cpp	28	

我是照着书本的代码打的:

#define _CRT_SECURE_NO_WARNINGS
#include<windows.h>
#include<tchar.h>
#include<stdio.h>

int CDECL MessageBoxPrintf( TCHAR * szCaption, TCHAR *szFormat, ...)
{
	TCHAR szBuffer[1024];
	va_list pArgList;

	//The va_start macro (defined in STDARG.H) is usually equivalent to:
	//pArgList=(char *) &szFormat + sizeof(szFormat);

	va_start(pArgList, szFormat);

	_vsntprintf(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 iCmdShow)
{
	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;
}

网上查找解决方法:解决方法
改后的代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include<windows.h>
#include<tchar.h>
#include<stdio.h>

int CDECL MessageBoxPrintf(const  TCHAR * szCaption,const TCHAR *szFormat, ...)
{
	TCHAR szBuffer[1024];
	va_list pArgList;

	//The va_start macro (defined in STDARG.H) is usually equivalent to:
	//pArgList=(char *) &szFormat + sizeof(szFormat);

	va_start(pArgList, szFormat);

	_vsntprintf(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 iCmdShow)
{
	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;
}

成功运行:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值