いつも参考にさせていただいてます。
下記のページを参考にして
CFileDialogにEditを追加する方法を学びました。
http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_DLGcustom.html
質問ですが、追加するEditをCFileDialogの右側に、
持っていくのは可能なのでしょうか?
<開発環境>
WindowsXP Pro VC++6.0 SP5 MFC(SDI)
よろしくお願いします。
OnSize() で Edit が右側になるように移動すればよいのでは。
dairygoodsさんレスありがとうございます。
CFileDialogの継承クラス(CCustomFileDialog)に
OnSize()を追加しても、変化がありませんでした。
void CCustomFileDialog::OnSize(UINT nType, int cx, int cy)
{
CFileDialog::OnSize(nType, cx, cy);
// TODO: この位置にメッセージ ハンドラ用のコードを追加してください
SetWindowPos(NULL, 100, 100, 1000, 1000, SWP_NOMOVE | SWP_NOZORDER);
}
記述が間違えているのでしょうか?
・そもそもOnSize()が呼び出されない。
→ Spy++などでCCustomFileDialogにどんなメッセージが届いているか調べてみる。
・初期表示時にOnSize()が呼ばれないだけで、サイズ変更時は呼び出される。
→ OnInitDialog()からOnSize()と同じ処理を呼んでみる。
・OnSize()は呼ばれているが、SetWindowPos()が機能していないようだ。
→
> SetWindowPos(NULL, 100, 100, 1000, 1000, SWP_NOMOVE | SWP_NOZORDER);
この呼出しは、CCustomFileDialog 自身のサイズ変更を意味しますが、
Edit を右側に表示したいのなら、
Edit の位置をダイアログの右側になるような場所に移動する
呼出しが必要なのではないですか?
dairygoodsさん レスありがとうございます。
>・そもそもOnSize()が呼び出されない。
> → Spy++などでCCustomFileDialogにどんなメッセージが届いているか調べてみる。
呼び出されていました。
>・初期表示時にOnSize()が呼ばれないだけで、サイズ変更時は呼び出される。
> → OnInitDialog()からOnSize()と同じ処理を呼んでみる。
結果は変わりませんでした。
>・OnSize()は呼ばれているが、SetWindowPos()が機能していないようだ。
> →
>> SetWindowPos(NULL, 100, 100, 1000, 1000, SWP_NOMOVE | SWP_NOZORDER);
> この呼出しは、CCustomFileDialog 自身のサイズ変更を意味しますが、
> Edit を右側に表示したいのなら、
> Edit の位置をダイアログの右側になるような場所に移動する
> 呼出しが必要なのではないですか?
GetDlgItem(IDC_EDIT1)->SetWindowPos(NULL, 100, 100, 1000, 1000, SWP_NOMOVE |
SWP_NOZORDER);
上記のように変更したのですが、
ファイルの種類の下で表示位置が変わるのみです。
ファイル名が表示されるCListCtrlの横に
Editを持っていくことは出来ないのでしょうか?
MFCで試したことはありませんが…
SDKだと以下のページが参考になるでしょう。
http://hp.vector.co.jp/authors/VA016117/esccd.html
MFCでも作成するリソースに気を付けて作れば可能だと思いますが。
んで、CFileDialogから派生させたクラスを作って、
SetTemplate()でリソース指定すれば可能ではないかと。
瀬戸っぷさん レスありがとうございます。
返事が遅くなり、申し訳ございません。
教えていただいたHPと
参考書(パワフルテクニック大全集 Visual C++5)を片手に
何とか作成することが出来ました。
ありがとうございます。