CFileDialogのカスタマイズ – プログラミング – Home

CFileDialogのカスタマイズ
 
通知
すべてクリア

[解決済] CFileDialogのカスタマイズ


いっこう
 いっこう
(@いっこう)
ゲスト
結合: 22年前
投稿: 22
Topic starter  

いつも参考にさせていただいてます。

下記のページを参考にして
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
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

OnSize() で Edit が右側になるように移動すればよいのでは。


返信引用
いっこう
 いっこう
(@いっこう)
ゲスト
結合: 22年前
投稿: 22
Topic starter  

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
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

・そもそもOnSize()が呼び出されない。
→ Spy++などでCCustomFileDialogにどんなメッセージが届いているか調べてみる。

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

・OnSize()は呼ばれているが、SetWindowPos()が機能していないようだ。

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


返信引用
いっこう
 いっこう
(@いっこう)
ゲスト
結合: 22年前
投稿: 22
Topic starter  

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を持っていくことは出来ないのでしょうか?


返信引用
瀬戸っぷ
 瀬戸っぷ
(@瀬戸っぷ)
ゲスト
結合: 22年前
投稿: 160
 

MFCで試したことはありませんが…
SDKだと以下のページが参考になるでしょう。
http://hp.vector.co.jp/authors/VA016117/esccd.html

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


返信引用
いっこう
 いっこう
(@いっこう)
ゲスト
結合: 22年前
投稿: 22
Topic starter  

瀬戸っぷさん レスありがとうございます。
返事が遅くなり、申し訳ございません。

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

ありがとうございます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました