CFileDialogクラスによるファイル選択画面の「?」ボタンについて

[戻る]
しの 2004/12/20(月) 22:49:28
みなさんこんにちは。
「しの」と申します。
こちらのサイトは時々参考にさせていただいております。
今日は、初めて質問させていただきます。よろしくお願いします。

OS:WinXPProfessional SP1
開発ツール:VC++ Ver6

現在、CFileDialogクラスを使用し、ファイル選択画面から選択されたファイルを取得す
る機能を作成しております。
ここで質問ですが、このクラスによるファイル選択画面の右上に「?」ボタンが表示さ
れ、このボタンを押下後、画面内のオブジェクトを選択すると吹き出しでヘルプが表示
されます。この「?」ボタンを表示しないようにする方法はないのでしょうか?
OPENFILENAME構造体のヘルプやdwFlagsに設定するフラグの内容を見ても「?」ボタンを
表示しないようにするような方法は無いように思います。
もしくは、「?」ボタンを押下後、画面内のオブジェクトを選択すると吹き出しで表示さ
れるヘルプの内容を変更する方法はないのでしょうか?

どなたかご存知の方がいらっしゃいましたらご伝授願えれば嬉しいです。
よろしくお願いします。

瀬戸っぷ [E-Mail] 2004/12/20(月) 23:43:34
> ここで質問ですが、このクラスによるファイル選択画面の右上に「?」ボタンが表示さ
> れ、このボタンを押下後、画面内のオブジェクトを選択すると吹き出しでヘルプが表示
> されます。この「?」ボタンを表示しないようにする方法はないのでしょうか?

ダイアログのスタイルと拡張スタイルを変更することで消せます。
(どちらか片方だけでも大丈夫なのかも知れませんが年のため両方を)

CFileDialogからクラスを派生させ、
そのクラスのOnInitDialogにて、下記のようなコードで消えるかと。

    CWnd *Dialog = GetParent();

    Dialog->ModifyStyle(DS_CONTEXTHELP, 0);
    Dialog->ModifyStyleEx(WS_EX_CONTEXTHELP, 0);

消えない場合、ModifyStyleEx()の第3引数で「SWP_NOMOVE | SWP_NOSIZE |
SWP_NOZORDER」辺りを設定して
SetWindowPos()の呼び出しでフレームの再描画をさせるようにしてみて下さい。

# 以前、SDKで試したらしくコードがコメントアウトして残ってた。
# MFCでの動作確認してみました。

しの 2004/12/21(火) 09:46:27
[[解決]]
瀬戸っぷさん、レスありがとうございます。
アドバイスしていただきました、下記の方法によりファイル選択画面の「?」を消すこと
ができました。
> CFileDialogからクラスを派生させ、
> そのクラスのOnInitDialogにて、下記のようなコードで消えるかと。

>   CWnd *Dialog = GetParent();

>   Dialog->ModifyStyle(DS_CONTEXTHELP, 0);
>   Dialog->ModifyStyleEx(WS_EX_CONTEXTHELP, 0);

本当にありがとうございました。
まだまだ、VC++,MFCについて勉強しないければいけないことが沢山あるようで
す。
これからもVC++,MFCの知識習得に頑張っていこうと思います。

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