GetStockObject

GetStockObjectは、定義済みのペンやブラシ、フォントなどのGDIオブジェクトのハンドルを取得するWindowsAPI・・・。

GetStockObject 関数

LineToのような線を引くAPIではペン、Rectangleのような図形APIで塗りつぶしをする時にはブラシ、TextOutのような文字列描画APIではフォント、というようにそれぞれのAPIには必要な道具があり、それらをGDIオブジェクトという・・・。

色を変えたりなど、カスタマイズをする時は、既定のGDIオブジェクトの中から別のものに変更するか、新規に作成する必要がある・・・。

GetStockObjectは、指定された既定GDIオブジェクトのハンドルを返す・・・。
それを使って、色を変えたりできる・・・。
(といっても太さとかは変えられないし、色も白かグレー3種類か黒ぐらいだけど・・・。)

WM_PAINTで、

ペンのオブジェクトはHPEN型のhPen、ブラシのオブジェクトはHBRUSH型のhBrush、に入れることとする・・・。

GetStockObjectで黒いペン(BLACK_PEN)と、灰色のブラシ(GRAY_BRUSH)を取得して、それぞれhPenとhBrushに格納してる・・・。
実はGetStockObjectの戻り値は、HGDIOBJというものなので、それらをオブジェクトごとにHPENやHBRUSHなど合うものにキャストしてる・・・。

で、ここでは、

取得したハンドルをTextOutで出力しているだけ・・・。

f:id:BG1:20150403180856p:plain

こんな感じ・・・。
色を変えるにはこれだけではダメで、この後で扱うSelectObjectでこのハンドルを指定しないといけない・・・。

Sample/GetStockObject.cpp at master · bg1bgst333/Sample · GitHub