単位には気をつけよう……

C++ Builder にとある ActiveX コントロール (OCX) を組み込んでプログラムを書いていて、途中までは順調だったのですが、コントロールをオーナードローにして自前で描画イベント拾って描画しようとした時に少しはまりました。 C++ Builder ではドローイベント (OnDrawCell とか) の引数に渡される座標の単位はピクセルなのですが、このコントロールは Twips で渡してくるようで、それをそのまま使ったしまったがために何描いても反映されないという事態に (実際には描いているのでしょうが、座標がおかしいので見えない) 。

デバッガで引数の値見たときに Right - Left がやたら大きな値だった時点で気付くべきだった…… orz 。ヘルプを 3 回読み直してやっと気付きました。単位に気を使ったことなんてなかったからなあ。今後は気をつけよう。