タイトル | : Re^2: コモンダイアログ内のコントロールのサイズ取得 |
記事No | : 6033 |
投稿日 | : 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に渡しているサイズは正しい。 何がいけないのでしょうか?
または、違う方法からでも望みを叶えられる手段が有れば。 何方か御指導下さいますよう、よろしくお願いいたします。
|