高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

TextExtentの弱点

 TWatcbを早々にDelphiに移植していて気づいたことですが、DelphiのTCanvas.TextExtentメソッドには弱点があります。
それは、改行に対応していないことです。改行を含む文字列を渡しても、一行文字列として計算してしまいます。
ですから、文字列が改行を含む可能性があるときは、TextExtentは使えません。かわりに、DrawText APIと、DT_CALCRECTを使って、矩形をはかる必要があります。
どうもTextExtentは、GetTextExtentPoint32というAPIを直接呼んでいるようなので、これ自体に問題があるようですね。

 やっぱりWin32アプリケーションを作ってると、APIがいろいろ分かるので、こっちのほうが勉強になります(ソースコードも見られるというのは、なお勉強に良いですね)。
APIが分かれば.NETやJAVAの関数も、ある程度APIに置き換えてして考えることが出来るし、参考サイトなどを見ながら考えると、OSの仕組みを推測することも、出来なくはありません。まあ、アルゴリズムを試すときなんかは、スクリプト言語や.NETのほうが楽ちんですが。あとは、PDA関連も(基本はWin32と同じで、でも使えないAPIもあるよ なんて言われた日にはたまりません(^_^;開発環境もeVC++とeVBしかないし)。