win32 part2 描画編

赤い色の直線を描く

赤のペンを作成
赤のペンをデバイスコンテキストにせんたくする
現在位置を直線の視点にセットする
終点まで直線を描く
バイスコンテキストからの赤のペンを選択削除する
赤のペンを削除する


WM_PAINTメッセージではBeginPaintで。(更新が必要とシステムが認識している領域以外には描画ができない)


バイスコンテキスト:ディスプレイとかプリンタとかメモリの「画用紙」を抽象化したもの。(デバイスに依存しない処理ができる。)
GDI:Windowsが提供するグラフィック描画機能
GDIオブジェクト(グラフィックスオブジェクト):GDI機能を使って描画するときに使う「道具」(「ペン」)
ビットマップ、ブラシ、フォント、論理パレット、パス、ペン、リージョンの7種類

関連付け:デバイスコンテキストに〜を関連付けるとは、「ペン」を持つこと。
一つのデバイスコンテキストに一つの「ペン」しか持てない。SelectObject APIで切り替える。

GDIオブジェクトも、デバイスコンテキストもハンドルを持っていてそれでもって操作する。

HGDIOBJ SelectObject(
  HDC hdc,          // デバイスコンテキストのハンドル
  HGDIOBJ hgdiobj   // オブジェクトのハンドル
);
ビットマップを扱うなら、戻り値の型HGDIOBJから、HBITMAPに
BOOL BitBlt(
  HDC hdcDest, // コピー先デバイスコンテキストのハンドル
  int nXDest,  // コピー先長方形の左上隅の x 座標
  int nYDest,  // コピー先長方形の左上隅の y 座標
  int nWidth,  // コピー先長方形の幅
  int nHeight, // コピー先長方形の高さ
  HDC hdcSrc,  // コピー元デバイスコンテキストのハンドル
  int nXSrc,   // コピー元長方形の左上隅の x 座標
  int nYSrc,   // コピー元長方形の左上隅の y 座標
  DWORD dwRop  // ラスタオペレーションコード
);