VB6でのMicrosoft Forms 2.0 ListBox


すけさん  2007-12-26 11:48:09  No: 99992  IP: 192.*.*.*

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

編集 削除
すけさん  2007-12-26 11:53:53  No: 99993  IP: 192.*.*.*

すみません、上記質問は  TextBoxでの方法です。
訂正、再質問

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

編集 削除
もげ  2007-12-26 13:40:43  No: 99994  IP: 192.*.*.*

'×教授
'○教示
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  No: 99995  IP: 192.*.*.*

>もげさんありがとうございます。

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

編集 削除
もげ  2007-12-28 10:06:39  No: 99996  IP: 192.*.*.*

では、
GetTextExtentPoint32W(API)
が必要でしょう。
http://madia.world.coocan.jp/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を置いて文字幅を取得して、
それを使うとか。

編集 削除