#include <Windows.h>
#include <tchar.h>
#include <stdio.h>
int CDECL MessageBoxPrint(TCHAR *szCaption, TCHAR * szFormat, ...)//CDECL stands for C Declaration.
//In CDECL, subroutine arguments are passed on the stack.
{
TCHAR szBuffer[1024];
va_list pArgList; // va_list is a pointer type in <stdarg.h>, which means variable list.
// It can take variable argument from the target list using va_arg()
// after initialize by va_start(), and after that, it should be terminate by va_end().
// The va_start macro (defined in STDARG.H) is usually equivalent to
// pArgList = (char*) & szFormat + sizeof(szFormat);
va_start(pArgList, szFormat);
// The last argument to wvsprintf points to the arguments
// The function wvsprintf was abandoned.
// And the substitute function is _vsntprintf_s or _vsnwprintf_s.
//_vsntprintf(szBuffer, sizeof(szBuffer) / sizeof(TCHAR), szFormat, pArgList);
//_vsntprintf(szBuffer, sizeof(szBuffer) - 1, szFormat, pArgList);
//_vsntprintf(szBuffer, 1024, szFormat, pArgList);
_vsntprintf_s(szBuffer, sizeof(szBuffer), 1024, szFormat, pArgList);
// The va_end macro just zeroes out pArgList for no good reason
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);
MessageBoxPrint(TEXT("ScrnSize"), TEXT("The screen is %i pixels wide by %i pixels high."), cxScreen, cyScreen);
return 0;
}
windows程序设计(第五版)笔记-001
最新推荐文章于 2022-07-24 23:40:02 发布