CFileDialogのカスタマイズ

[戻る]
いっこう 2005/04/08(金) 11:12:35
いつも参考にさせていただいてます。

下記のページを参考にして
CFileDialogにEditを追加する方法を学びました。

http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_DLGcustom.html

質問ですが、追加するEditをCFileDialogの右側に、
持っていくのは可能なのでしょうか?

<開発環境>
WindowsXP Pro VC++6.0 SP5 MFC(SDI)

よろしくお願いします。

dairygoods 2005/04/08(金) 13:10:28
OnSize() で Edit が右側になるように移動すればよいのでは。

いっこう 2005/04/08(金) 15:17:58
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);
}

記述が間違えているのでしょうか?

dairygoods 2005/04/08(金) 15:32:56
・そもそもOnSize()が呼び出されない。
 → Spy++などでCCustomFileDialogにどんなメッセージが届いているか調べてみる。

・初期表示時にOnSize()が呼ばれないだけで、サイズ変更時は呼び出される。
 → OnInitDialog()からOnSize()と同じ処理を呼んでみる。

・OnSize()は呼ばれているが、SetWindowPos()が機能していないようだ。
 →
>    SetWindowPos(NULL, 100, 100, 1000, 1000, SWP_NOMOVE | SWP_NOZORDER);
  この呼出しは、CCustomFileDialog 自身のサイズ変更を意味しますが、
  Edit を右側に表示したいのなら、
  Edit の位置をダイアログの右側になるような場所に移動する
  呼出しが必要なのではないですか?

いっこう 2005/04/08(金) 15:49:54
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を持っていくことは出来ないのでしょうか?

瀬戸っぷ [E-Mail] 2005/04/09(土) 01:25:12
MFCで試したことはありませんが…
SDKだと以下のページが参考になるでしょう。
http://hp.vector.co.jp/authors/VA016117/esccd.html

MFCでも作成するリソースに気を付けて作れば可能だと思いますが。
んで、CFileDialogから派生させたクラスを作って、
SetTemplate()でリソース指定すれば可能ではないかと。

いっこう 2005/04/12(火) 18:09:57
[[解決]]
瀬戸っぷさん レスありがとうございます。
返事が遅くなり、申し訳ございません。

教えていただいたHPと
参考書(パワフルテクニック大全集 Visual C++5)を片手に
何とか作成することが出来ました。

ありがとうございます。

古いスレッドには追加発言できません。