開発環境 Microsoft Visual C++ 2010 Express (SP1)
実行環境 Microsoft Windows XP Home Edition (SP3)
プロジェクトの種類 Win32 プロジェクト
プロジェクト名 trace
アプリケーションの種類 Windows アプリケーション
追加のオプション 空のプロジェクト
文字セット Unicode

統合開発環境(IDE:Integrated Development Environment)からデバッグ開始(F5)すると出力ウィンドウに表示される。
IDEからデバッグなしで開始(Ctrl+F5)、またはIDE以外から実行した場合、DebugViewを使うことにより表示される。

trace.c
#include <Windows.h>
#include <tchar.h>
#include <malloc.h>
 
// 関数プロトタイプ宣言
void Trace(LPCTSTR format, ...);
void Trace2(LPCTSTR format, ...);
 
//==============================================================================
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	int cx = GetSystemMetrics(SM_CXSCREEN);
	int cy = GetSystemMetrics(SM_CYSCREEN);
	Trace(_T("画面サイズ = %d x %d\n"), cx, cy);
	Trace2(_T("画面サイズ = %d x %d\n"), cx, cy);
	return 0;
}
 
//------------------------------------------------------------------------------
void Trace(LPCTSTR format, ...)
{
	va_list arg_ptr;
	TCHAR buffer[256];
	int size;
 
	va_start(arg_ptr, format);
	size = _vsntprintf_s(buffer, _countof(buffer), _TRUNCATE, format, arg_ptr);
	va_end(arg_ptr);
	OutputDebugString(buffer);
	if (size < 0) {
		OutputDebugString(_T("...\n"));
	}
}
 
//------------------------------------------------------------------------------
void Trace2(LPCTSTR format, ...)
{
	va_list arg_ptr;
	LPTSTR buffer;
	int size;
 
	va_start(arg_ptr, format);
	size = _vsctprintf(format, arg_ptr);
	if (size < 0) {
		return;
	}
	size = min(size + 1, 256);
	buffer = (LPTSTR)_malloca(sizeof(TCHAR) * size);
	size = _vsntprintf_s(buffer, size, _TRUNCATE, format, arg_ptr);
	va_end(arg_ptr);
	OutputDebugString(buffer);
	if (size < 0) {
		OutputDebugString(_T("...\n"));
	}
	_freea(buffer);
}
 
最終更新:2012年10月15日 21:41