開発環境 |
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