■ 新・ゲーム開発講座 |
■ へっぽこプログラミング入門♪ |
■第5夜:ちょっと豪華?な文字表示 前回は、既定フォント、既定サイズ、既定色で単に文字を出力するだけでした。ところで、文字表示をもう少しゴージャスにしたい場合はどうしましょう。TextOut()は現在設定されているフォント情報を用いて単にテキストを画面に書き出しているだけです。すると文字表示に変化を付けたい場合には、フォント情報(種類、大きさ、表示角度など)を事前に設定してから
TextOut() を呼べば良さそうですね。
|
■フォントの使い方 フォントを指定して文字を出力する処理の流れの例を簡単に書くと、以下のようになります。 |
//フォントオブジェクト作成 hfont=CreateFont(
);
|
「オブジェクトって何だ?」と思われる方もおられるかと思いますが、あまり気にしないで結構です。面倒な処理を水面下でやってもらうためのデータ一式の塊と思ってください(乱暴 ^^;)。そのデータ一式を識別するための背番号が HFONT hfont , oldfont で宣言しているフォントへのハンドルです。 処理はまず、フォントオブジェクトを生成するところから始まります。hfont=CreateFont(・・・)でフォントオブジェクトを作成するとともに、そのハンドルを取得します。パラメータが多くて面倒ですが(笑)、多くの場合デフォルト設定で間に合ってしまいます。当面の目標であるノベル製作では、せいぜいフォントの大きさが変えられれば十分でしょう。 一見、面倒な作業ですが、Windows上でプログラミングを行う上では避けて通れない儀式のようなものですので、こればかりは慣れるしかありません。面倒だと思ったら、本項の最後に示す
StrPut3D() のようにラッピング(”包む”の意)関数を定義してしまえば良いでしょう。 |
int StrPut3D(HDC hdc,int x,int y,int
fontSize,UINT color1,UINT color2,char *str)
{
} |
さて StrPut3D()の引数を見ると、HDC hdc というのがありますね。これは、ウィンドウやBMPなどの画像オブジェクトを扱うときに必ず使用するデバイスコンテキスト(DC)というデータ構造へのハンドルです。第1夜のスケルトンをよく見ると、WinMain()中でウィンドウを表示した直後に
でDCを取得しています。ウィンドウにアクセスする際には、ライブラリ関数やAPIにこのDCのハンドルを渡して「このウィンドウ(画像)の基本情報はここに入っているから参照してね」
という使い方をします。StrPut3D() では、表示文字列の背景処理を設定する SetBkMode()
がこのDCへのハンドルを要求しているので引数に加えてある次第です。 |
|