今回は、テキストを出力する部分を『DdTextOut』関数にまとめました。さぁコードを見てみましょう。
GDIで描画するためには、デバイスコンテキストを認識するハンドルというものを取得しなければなりません。
デバイスコンテキストを認識するハンドルとは、描画可能なメモリのパスを収納しておくような感じのもので、GDI関数呼び出し時によく引数として使用します。
では、ハンドルの取得方法を説明します。
| 書式 | HRESULT GetDC( HDC FAR *lphDC );
|
| lphDC |
デバイス コンテキストが返されるハンドルへのポインタ。
|
| 戻り値 |
DirectDrawオブジェクトの作成に成功するとDD_OKが返ってくるらしい。
|
「lpFront->GetDC(&hdc);」のように、途中「->」を記述しています。これらはC++で使われるクラスというものですが、ここでは解説省略。クラスについては他のHPを参照して下さい。
こうして、GetDCを実行すると、そのサーフェイス(今回はプライマリサーフェイス)のデバイスコンテキストを認識するハンドルを取得出来ます。
では、次にGDI関数の『TextOut』について説明します。
| 書式 | BOOL TextOut( HDC hdc, int nXStart, int nYStart, LPCTSTR lpString, int cbString );
|
| hdc | デバイスコンテキストを認識するハンドル 今回は「hdc」を引き渡す。 |
| nXStart | 描画先のX座標 |
| nYStart | 描画先のY座標 |
| lpString | 描画したい文字列 |
| hdc | 文字列のバイト数(文字数とも言うかも) |
| 戻り値 |
成功した場合はTRUEが返ってくるらしい。
|
こうして、一通りGDI関数を使用したら、今度はハンドルを解放しなければなりません。
解放には、次の関数(サーフェイスのメンバ関数)を呼び出します。
| 書式 | HRESULT ReleaseDC( HDC hDC );
|
| hDC |
GetDCを使用して取得したデバイスコンテキストのハンドル。
今回はhdcを引き渡す。GetDCとは違い、ポインタでは無いことに注意しましょう。
|
| 戻り値 |
DirectDrawオブジェクトの作成に成功するとDD_OKが返ってくるらしい。
|