Home>>Visual C++>>デバイスコンテキスト LastUpdate:2009-01-21
お絵かきキャンパス
デバイスコンテキストはGUI用のお絵かきキャンパスです。
デバイスコンテキストには図形を描画したり画像を表示させたり出来ます。
コントロールはダイアログベースのアプリが中心ですが、
デバイスコンテキストはダイアログベースでもシングルドキュメントでも使います。
まあ具体的に見てみましょう。
シングルドキュメントの画面編集
下はシングルドキュメントの初期コードの状態です。
白い空間がありますが、ここにはダイアログベースのようにコントロールを貼り付けることは出来ません。
(CFormViewを使えば出来たりしますが、ひとまず基本で説明します。)

ここで登場するのが「デバイスコンテキスト」という概念です。
白い空間をキャンパスとして、関数(API)を通じて図形や文字を書き込むのです。
下の図は背景全体をデバイスコンテキスト(キャンパス)にして文字や図形を書き込んだ例です。
背景をグレイにして、赤い文字や丸(○)や四角(□)を書いています。

デバイスコンテキストへの図形描画はAPIを通じて行われます。
つまりソースコードに直接描画用のプログラミングコードを書き込むのです。
具体的にはViewクラスにOnDrawという関数があり、そこに以下のコードを書いています。
下コードの@〜Dに注目して下さい。
pDCというのがデバイスコンテキストを表すポインタで、
pDC(お絵かきキャンパス)に直接「Ellipse」や「Rectangle」を使って○や□を描いています。
上の方に色々おまじないが書いてありますが、この辺は使っているうちに憶えていけばいいです。
ダイアログベースの画面編集
ダイアログベースではこのデバイスコンテキストと、
先ほどのコントロールを組み合わせてアプリを作ります。
下のアプリの場合、上半分がコントロールを貼り付けた部分で(白い範囲もEdit Controlです)、
下半分がデバイスコンテキストに書き込んで表示している部分になります。

このデバイスコンテキストはPicture Controlというコントロール中に作っています。
Picture Controlはダイアログ内の四角形領域を指定するために使いますが、
この領域中をキャンパスとみなして書き込んでいるのです。
Picture Controlを複数配置すれば、
その中にそれぞれ独立したデバイスコンテキストを作れます。

デバイスコンテキスト内の線や塗りつぶしの色は簡単に変えられます。
背景色や文字のフォント等も同様に変えられます。
(詳しくは図形描画に書いています。)
まあまだまだ奥が深いですが、
とりあえずVisual C++でGUIを作るにはコントロールとデバイスコンテキストが大事だと理解してください。