//编写格式化的MessageBox 参数顺序完全一样 内容是格式化的
int _cdecl MessageBoxPrint(HWND hWnd, LPCTSTR szTextFormat, LPCTSTR szCaption, UINT uType,...)
{
va_list arg;
TCHAR szBuffer[1024];
va_start(arg,uType);//arg指向uType后的参数地址
_vsntprintf(szBuffer,1024,szTextFormat,arg);
va_end(arg);
return MessageBox(hWnd, szBuffer, szCaption, uType);
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
int cx = GetSystemMetrics(SM_CXSCREEN);
int cy = GetSystemMetrics(SM_CYSCREEN);
MessageBoxPrint(NULL, TEXT("%i * %d!"), TEXT("Caption"), MB_OKCANCEL, cx, cy);
return 0;
}
编写可变参数的函数 调用约定必须是 _cdecl
windows api函数调用约定是__stdcall
va_start宏用于获取可变参数 指向其地址