最終更新 2003 09/22
サンプルのダウンロード → API_wsprintf.lzh(36k)
全ソースコード
wsprintf 関数
対応しているバージョン
95, 98, Me, NT3.1以降, CE1.0以降, 2000, XP
使用するヘッダとライブラリ
winuser.h
user32.lib
|
変数の値を文字として表示するには まず wsprintf() 関数を使って
文字を整形します。
次にその整形した文字を TextOut() 関数で表示します。
char text[255];
char value = 69;
wsprintf( text, "変数 value の値 %d", value );
TextOut( hDC, 0, 0, text, lstrlen( text ) );
簡単に書くとこういう感じになります。
HDC は GetDC() 関数を使って取得します。
取得した HDC は必要がなくなったら、ReleaseDC() 関数を使って
必ず解放します。
wsprintf() 関数は sprintf() 関数と機能は同じです。
wsprintf() 関数は Unicode など、2バイト以上のワイド文字コードを
使ったプログラムに対応しているだけです。
通常は sprintf() でも問題ありません。
wsprintf() は、念のため使っているだけです。
整形した文字を 第一引数(一番左側の引数)に指定した char型 の
配列変数に格納します。
ここに指定するのは char型 のポインタよりも char型 の配列の方が
間違いがないです。
ポインタを指定する場合は、あらかじめ new や GlobalAlloc() などで
文字をしまっておくためのメモリを確保したポインタでないとダメです。
ダメな例
char* p;
char value = 100;
wsprintf( p, "値を表示しろやー %d", value );
TextOut( hDC, 0, 0, p, lstrlen( p ) );
これではダメです。
ポインタを使いたいなら、あらかじめ必要なメモリを確保しておきます。
良い例
char* p = GlobalAlloc( 256 );
char value = 100;
wsprintf( p, "値を表示しろやー %d", value );
TextOut( hDC, 0, 0, p, lstrlen( p ) );
GlobalFree( p );
確保したメモリは必要がなくなったら必ず解放しましょう。
wsprintf() 関数で使う %d とか %03d とかの意味は printf() 関数と
全く同じです。
%d の意味がわからんちん〜という方は VC++ 付属のヘルプを見ましょう。
|