2011-08-03 26 views
1

CFileDialogエラーメッセージをカスタマイズする方法があると便利です。CFileDialogエラーメッセージのカスタマイズ

たとえば、ファイル名の編集ボックスに無効なドライブを入力すると、次のようなエラーメッセージが表示されます。

Invalid Drive

私はここ異なるエラーを示したいと思います。サブクラス化なしでが可能ですかCFileDialog

エラーを表示する代わりにダイアログが返されても問題ありません。ここで

は、コードスニペットです:

CFileDialog dlgFile(TRUE, 0, 0, OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT, szFilters, 0, 0, 0); 
dlgFile.m_ofn.FlagsEx |= OFN_EX_NOPLACESBAR; 
dlgFile.m_ofn.lpstrTitle= csTitle; 
dlgFile.m_ofn.lpstrInitialDir = NULL; 

const int nMaxFiles = 2512; 
const int nBuffSize = ((nMaxFiles * (MAX_PATH + 1)) + 1) * sizeof(TCHAR); 
dlgFile.GetOFN().lpstrFile = new TCHAR[ nBuffSize ]; 
::ZeroMemory(dlgFile.GetOFN().lpstrFile, nBuffSize); 
dlgFile.GetOFN().nMaxFile = nBuffSize; 
if(dlgFile.DoModal() == IDOK) 
{ 
    ... 
    ... 
} 
+0

MFCは、Windowsに組み込まれたファイルダイアログの周りに薄いラッパーを追加するだけです。 Windowsの組み込みダイアログを変更する方法があるかどうかを尋ねてきます。 –

+0

いいえ、私はそうではありませんでした。私はあなたが言及した「薄い包み紙」が違う振る舞いをする方法があるかどうかを尋ねていました。 –

答えて

2

それは、ダイアログを変更するだけで大​​丈夫だならば、あなたはWH_CBTとフックSetWindowsHookExをインストールすることができます。

+0

上記のエラーのケースを処理するためにフック手順を使用する方法を説明できますか?私はここで、フックされるイベントは2つです:*ファイル名の編集ボックス*への戻り*をクリックし、*開くボタン*をクリックします。これを達成するためにWH_CBTフックを使用できますか? –

+1

コールバックは、いくつかのイベント(ウィンドウのアクティブ化、作成、破棄、最小化、最大化、移動、サイズ変更など)に対して呼び出されます。この方法で、ダイアログボックス/エラーメッセージとサブコントロールのhwndを取得し、変更することができます。詳細はhttp://msdn.microsoft.com/en-us/library/ms644977(v=vs.85).aspxをご覧ください。 – cprogrammer

+0

まあ、それは私を満足させる! :) –

0

OFN_NOVALIDATEm_ofn.Flagsという設定がこの妥当性検査を削除し、その警告を表示せずにダイアログから戻ることがわかりました。

+0

ダイアログから戻ることなく別の警告を表示する方法があるといいでしょう。 –

関連する問題