« Tab文字の展開 | トップページ | GetTextExtentExPointの続き »

2007年1月10日 (水)

GetTextExtentExPoint

GetTextExtentExPointである。以前、GetTextExtentPoint32を使ったが、そのEx版である。GetTextExtentPoint32はパラメータとして渡した文字列の幅を返してくれるが、GetTextExtentExPointはMSDNのヘルプにあるように、ワードラップを行うのに便利なのである。具体的に言うと、ある幅をもった領域に長い文字列を描画する時に、その文字列の何文字目までが、文字が途中で切れずに描画できるか求めるのに便利なのである。

例えば、幅100のウィンドウにMSPゴシックのサイズ10のフォントでなにも考えずにExtTextOutで描画すると下の図のようになる。

Expoint1

この場合、「あいうえおかきくけこ」を描画したのだが、「け」の文字が切れてしまっている。そこで、GetTextExtentExPointの出番である。この場合、横幅100の領域に収めたいから、第4引数nMaxExtentに100を指定して呼び第5引数lpnFitの文字数分だけ表示したのが下の図の下の文字列である。

Expoint2

ただ、単純にGetTextExtentExPointで返されたlpnFitの値をExtTextOutの文字数を表す第7引数cbCountに渡しただけである。この場合lpnFitに8が返されていた。もちろん、文字列の幅だけを返すGetTextExtentPointを使えば、どの文字でちょん切れるか計算できないこともない。ただ、GetTextExtentPointを使って求める場合、工夫をしないと何度もGetTextExtentPointを呼び出すはめになるだけだ。

で、次回に続く・・

« Tab文字の展開 | トップページ | GetTextExtentExPointの続き »

Windows」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1497665/39651902

この記事へのトラックバック一覧です: GetTextExtentExPoint:

« Tab文字の展開 | トップページ | GetTextExtentExPointの続き »

自作ソフトウェア

無料ブログはココログ

メモ