Yggdrasil Seeds : Software Works : DualMusik : DBGCON.DLL
PV[1156357]

DBGCON.DLL


DualMusikで使っているデバッグ用コンソールです。というか、Windows APIのコンソール機能の一部をラッピングしつつ管理用コードを付け加えただけなので、他のプロジェクトでもそのまま使えます。

組み込み

DBGCON.DLL を利用するソースファイルに DBGCON.H をインクルードします。また、インポートライブラリを利用する場合は DBGCON.LIB をリンクします。
また、 DBGCON.H をインクルードする前に CONENABLE を定義しておくと大文字の関数名(というかマクロ)が有効となります。これは定義を外すと実行されなくなるので、デバッグ版/リリース版の切り替えに便利です。

使用手順

開始時で con_open() を、終了時で con_close() を実行させます。DLLなど複数のモジュールで構成される場合も同様に各モジュールの開始時と終了時に書いておきます。DLLの場合は DllEntryPoint() に書いておけばいいでしょう。

#define CONENABLE #include "dbgcon.h" int DllEntryPoint(HINSTANCE hi,DUMU4B reason,PDUMVOID rsvd){ switch(reason){ case DLL_PROCESS_ATTACH:CON_OPEN();break; case DLL_PROCESS_DETACH:CON_CLOSE();break; } return 1; }

インポート関数


void CONEXPORTTYPE con_open(void)
#define CON_OPEN(void)

処理内容
コンソールを開く。
このコンソールはプロセス毎に1つだけ使えるもので、同一プロセス内の複数モジュールで使う場合は共用となる。
既にコンソールが開かれている場合は何も起きないが、内部で参照数を数えているため各モジュールで1回ずつ呼ぶ必要がある。


void CONEXPORTTYPE con_close(void)
#define CON_CLOSE(void)

処理内容
コンソールの参照数を減らし、0になった場合のみコンソールを閉じる。


void CONEXPORTTYPE con_putstr(const char *s)
#define CON_PUTSTR(const char *s)

引数
s書き出す文字列

処理内容
コンソールに文字列を書き出す。
単純に書き出すだけ。数値とか書式指定とか使いたい場合は sprintf() とか CON_SPRINTF(()) とか併用してちょ。


void CONEXPORTTYPE con_locate(int x,int y,BOOL rf)
#define CON_LOCATE(int x,int y,BOOL rf)

引数
x移動先カーソル座標
y
rfTRUEを指定すると現在位置から相対的に移動

処理内容
コンソールのカーソル位置を変更する。


BOOL CONEXPORTTYPE con_printf(unsigned bufsize,const char *format[,arg,...])
#define CON_PRINTF((unsigned bufsize,const char *format[,arg,...]))

引数
bufsize作業用に確保するバッファサイズ
format書式
arg引数群

処理内容
printf()のフォーマッティングでコンソールに書き出す。
可変長引数を使う関係上、マクロ版に限り括弧は二重にする必要がある。

返値
TRUE正常
FALSE異常(バッファサイズが足りない)


#define CON_SPRINTF((char *buf,const char *format[,arg,...]))
#define CON_SNPRINTF((char *buf,size_t bufsize,const char *format[,arg,...]))

引数
bufsprintf(),snprintf()と同じ
bufsize
format
arg

処理内容
中身は単なる sprintf() と snprintf()
CONENABLE に因り処理の可否を切り替えられるようにしただけ。
マクロで可変長引数を使う関係上、括弧は二重にする必要がある。


[表紙]