tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^2: コモンダイアログ内のコントロールのサイズ取得
投稿日: 2007/08/08(Wed) 14:48
投稿者Edward
Blue様 御指導有難う御座います。

サイズは適正に取得出来ていました。申し訳有りません。
その後に問題が有ったようです。

コモンダイアログ内のコントロールにパス文字列を表示したいのですが
このコントロールはダイアログのリサイズに伴いリサイズされます。
パス文字列が入り切らなくなった時は"..."を含めた省略形で表示します。
一行だけを表示するならば、ぴったりサイズで表示されるのですが。
パスの前に二行短い行を付けて三行で表示したいのです。
---------------------------------------------------
表示例:
 タイトル                    <1行目
                         <2行目
 C:\AAA\BBB\CCC...DDD(一行目を差引いた分、短い)    <3行目
---------------------------------------------------
上記の文字列をPathSetDlgItemPathに渡すと三行目が幅ピッタリではなく
一行目の長さ分短く表示されます。

なので自力でコントロールの横幅ピッタリのパス文字列を作り
 "タイトル" & vbCrLF & vbCrLF 
と付けて三行で表示したいと考え。

自力でコントロールの横幅ピッタリの省略形パス文字列を作ろうとしました
コントロール幅は正確に取得出来ていましたが、返って来る文字列が
なぜかコントロール幅より短いのです。何故なのでしょうか?

方法1:
hCtlWnd = GetDlgItem(hwnd, CtlID)
Call GetWindowRect(hCtlWnd, udtRect)
lngDCHandle = GetDC(hCtlWnd)
Call PathCompactPath(lngDCHandle, strDir, (udtRect.Right - udtRect.Left))
Call ReleaseDC(hwnd, lngDCHandle)
Call SetDlgItemText(hwnd, CtlID, strDir)
方法2:
Call PathSetDlgItemPath(hWnd, CtlID, strDir)

方法2ではコントロール幅ピッタリに表示されますが。
方法1ではなぜか文字列が短いです、PathCompactPathに渡しているサイズは正しい。
何がいけないのでしょうか?

または、違う方法からでも望みを叶えられる手段が有れば。
何方か御指導下さいますよう、よろしくお願いいたします。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。