1.省略表示の方法を説明します。省略表示するには、まず目標とする幅が必要です。RECT構造体にその値を代入します。 |
RECT.Left = 適当 : RECT.Top = 適当 RECT.Right = RECT.Left + 目標幅 : RECT.Bottom = RECT.Top + 最低"|"の高さ (当然単位はピクセル(:vbPixel)に変換すること) |
2.次に、(必要に応じて)文字列が変更されてもいいように変数に文字列をキャッシュします。 |
Dim S As String S = 変換対象の文字列変数 |
3.DrawText()を呼び出します。 |
DrawText hdc, lpStr, nCount, lpRect, wFormat hdc : 描画対象のデバイスコンテキストです。(ex. Picture1.hDC) lpStr : 描画する文字列です。(ex. S) nCount : 描画する文字数です。(-1は文字列全部です。) lpRect : 描画する範囲です。 wFormat : 描画フラグ(位置や省略)です。 呼び出し例: DrawText Me.hdc, S, -1, RECT, DT_CALCRECT この関数を、次のように呼び出します。 DrawText Me.hdc, S, -1, RECT, DT_SINGLELINE Or DT_PATH_ELLIPSIS Or DT_MODIFYSTRING (パスの省略表示の場合です。必要に応じて DT_END_ELLIPSIS や DT_WORD_ELLIPSIS を使いましょう) 描画される文字列を表示しない時は、ピクチャーボックスなどのダミーを用意しておくといいです。 この関数を実行すると、変数 S に、省略後の文字列が代入された形で入ります。 |
4.変数 S から省略後の文字列を取り出します。 |
S の中にヌル(Windowsの文字列終端マーク)があれば、省略された文字列になっていることになります。その時、 Left$(S, InStr(S, vbNullChar) - 1) を実行すれば、省略後の文字列を簡単に取り出すことができます。 |
注意 |
クラスの文字列プロパティを直接この関数に渡す時は注意が必要です(書き換えられる時と書き換えられない時があります)。必ずキャッシュするようにした方がいいでしょう。 |