DrawTextが失敗する時


ひよこ  2009-11-26 04:20:57  No: 102092

DrawText()でDT_CALCRECT指定をしてサイズを取得する際に、
失敗する時というのは、どのようなことが考えられるでしょうか?
指定したフォント/文字列がはみ出てしまうような領域サイズに
なってしまうことがあるのですが、再現が出来ない為、
対策が立てられず困っています。

「指定フォント/表示文字列数」は、パターンが多くないので、
最悪は領域サイズを固定で指定してしまうという手もあるのですが、
出来ればDT_CALCRECTを使用した方法を使いたいと思っています。
よろしくお願いいたします。


ひよこ  2009-11-26 18:05:55  No: 102093

連続投稿になってしまって、すみませんでした><


GOD  2009-11-26 19:32:56  No: 102094

ヤマ勘で。

文字列の長さ指定部は合っていますか?
2バイト文字と1バイト文字が混在("あ1")した場合、3になる。
または、文字列の長さ指定部が-1になっており、表示文字列中にnull文字
が入っているとか。


ひよこ  2009-11-26 21:24:09  No: 102095

文字列は全角8文字構成で、最後の1文字は全角スペースでした。
長さ指定部は-1ですが、文字列中にはNULLは入っていませんでした。
DrawTextで取得した領域サイズは、指定した文字列よりも幅も高さも小さいRECTとなっていました。また、DrawTextでエラーが返ってきたのかどうかは不明の状態です><


K.J.K.  2009-11-27 00:50:05  No: 102096

# 解決策の提示ではありません。

どのようにして取得した hDC なのでしょうか?
一般的に、OS が XP 以降(Visual Style (Theme)のある環境)では、
VBのオブジェクトの hDC プロパティで取得した値などに対しては
適切な値を返せないことが結構あります。これは、現時点では仕様
であるとしか言えないようです。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加