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)
・引数
・処理内容
コンソールに文字列を書き出す。
単純に書き出すだけ。数値とか書式指定とか使いたい場合は sprintf() とか CON_SPRINTF(()) とか併用してちょ。
void CONEXPORTTYPE con_locate(int x,int y,BOOL rf)
#define CON_LOCATE(int x,int y,BOOL rf)
・引数
x | 移動先カーソル座標 |
y |
rf | TRUEを指定すると現在位置から相対的に移動 |
・処理内容
コンソールのカーソル位置を変更する。
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,...]))
・引数
buf | sprintf(),snprintf()と同じ |
bufsize |
format |
arg |
・処理内容
中身は単なる sprintf() と snprintf()
CONENABLE に因り処理の可否を切り替えられるようにしただけ。
マクロで可変長引数を使う関係上、括弧は二重にする必要がある。
[表紙]