■ VB6でのMicrosoft Forms 2.0 ListBox

[Visual Basic Q & A 掲示板] [過去ログの一覧]


すけさん 2007/12/26(水) 11:48:09 <中級者>
VB6を使っています。
Microsoft Forms 2.0 ListBoxに、中国語・韓国語などをセットして
その文字列幅分のWidth調整をするにはどのようにすればよいのでしょう?
詳しい方、よろしくご教授ください。

すけさん 2007/12/26(水) 11:53:53
すみません、上記質問は TextBoxでの方法です。
訂正、再質問

VB6を使っています。
Microsoft Forms 2.0 「TextBox」 に、中国語・韓国語などをセットして
その文字列幅分のWidth調整をするにはどのようにすればよいのでしょう?
詳しい方、よろしくご教授ください。

もげ 2007/12/26(水) 13:40:43 <常連>
'×教授
'○教示
http://support.microsoft.com/kb/193540/ja
http://support.microsoft.com/kb/224305/JA/
http://support.microsoft.com/kb/241245/

幅の調整は、
TextBox1.AutoSize = True
で済めばお手軽ですね。

すけさん 2007/12/27(木) 14:10:25
>もげさんありがとうございます。

TextBoxを AutoSize = True
にプロパティ設定して
TextBoxにUnicode文字列をセットしても幅が文字幅になりません。
幅が1文字分ぐらいの幅になってしまいます。

もげ 2007/12/28(金) 10:06:39 <常連>
では、
GetTextExtentPoint32W(API)
が必要でしょう。
http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200403/200403_04030044.html
http://msdn2.microsoft.com/en-us/library/ms534223.aspx
http://www.winapi-database.com/Graphics/TextOut/GetTextExtentPoint32.html

ですが、Forms2.0のTextBoxにはhWndプロパティが存在しないので、
この方法ではちょっと無理でしょう。
RichTextBoxではダメでしょうか?

Forms2.0(VB6.0で非サポート、既知バグあり、配布条件いろいろあり)
に固執する必要がなければ、そういう選択もあるのでは?と思いますね。

どうしてもというのであれば、
同一フォントサイズに設定したダミーのRichTextBoxを置いて文字幅を取得して、
それを使うとか。

毎週金曜日はポイント最大3倍!さらに4倍のチャンスも!

Programming Library