トリッキーコードネット トップへ戻る   C/C++, Java, Perl, PHP, JavaScript, アルゴリズム, ショートコーディング, IOCCCコードの解説, 等々

サイト情報

トリッキーなコード

7行プログラミング

物凄いコード集

アルゴリズム

データ構造

C/C++な話題

コードサンプル

ツール/環境構築

開発ノウハウ 等

ネタ/ジョーク集

おススメ書籍/サイト

サイトTOP >> コードサンプル >> printf()関数の様な、変数デバッグ用メッセージボックス

printf風の変数デバッグ用メッセージボックス (Win32API)

複数の変数を、任意の文字列に成型して、メッセージボックスとして表示してくれる関数です。
(printf()関数でコンソール上に変数を出力するかの如く、Windows上にメッセージボックスで変数値を表示してくれます^^)

#include <windows.h>
#include <stdarg.h>
#include <tchar.h>

void DebugMsgBox(TCHAR * tszParam, ...)
{
  TCHAR tszStr[1024];
  va_list list;

  va_start(list, tszParam);
  _vstprintf_s(tszStr, 1024, tszParam, list);
  va_end(list);

  MessageBox(GetForegroundWindow(), tszStr, _TEXT("DEBUG"), MB_OK);
}
使用例:
#define WIN32_LEAN_AND_MEAN

#include <windows.h>
#include <stdarg.h>
#include <tchar.h>

void DebugMsgBox(TCHAR * tszParam, ...);

int main()
{
    int i = 9999;
    TCHAR * str = _TEXT("あいうえお");

    DebugMsgBox(_TEXT("iとstrの中身は %04d %s です。"), i, str);

    return 0;
}

void DebugMsgBox(TCHAR * tszParam, ...)
{
  TCHAR tszStr[1024];
  va_list list;

  va_start(list, tszParam);
  _vstprintf_s(tszStr, 1024, tszParam, list);
  va_end(list);

  MessageBox(GetForegroundWindow(), tszStr, _TEXT("DEBUG"), MB_OK);
}
結果: DebugMsgBox結果 stdarg.hをインクルードし、関数の最後に , ... をつけることで、関数へ渡すパラメータの数を、任意に変更できます。 関数内でvsprintfを使用し、成型対象の文字列に変数を埋め込んで、その文字列をMessageBox関数で表示しています。 ※vsprintfは、 ⇒ CRTセキュリティの強化の為 vsprintf_stchar.h使用の為、_vstprintf_s ということで、_vstprintf_s を使用しています。 Windowsアプリ開発において、デバッグは、『 VC++のデバッガで追いかけていく方法 』がおそらく主流なのでしょうが、 ・・・こちらの方法を知っておいても、思わぬところで役に立ってくれるかもしれません^^;)
         このエントリーをはてなブックマークに追加   


作業効率化・ライフハックのオススメ記事




コンピュータ・テクノロジーのオススメ記事





恋愛・人間関係のオススメ記事




※ 当サイトは、トップページからリンクで辿る事の出来るページに限り、リンクフリーです。
※ 当サイトの閲覧/利用によって生じた如何なる損害も、当サイト管理人は責任を負いません。
※ 当サイトの内容を転載される場合は、当サイトへのリンクをお願い致します。