MFC データベース アプリケーションの [ファイル] メニュー
MFC データベース アプリケーションを作成する際にシリアル化を使用しない場合は、[ファイル] メニューの [開く]、[閉じる]、[保存]、および [名前を付けて保存] コマンドをどのように解釈すればよいでしょうか。この質問に対するスタイル ガイドラインはありませんが、いくつかの推奨事項を次に示します。
[ファイル] メニューの [開く] コマンドを完全に排除します。
[開く] コマンドを "データベースを開く" と解釈し、アプリケーションが認識するデータ ソースの一覧をユーザーに表示します。
[開く] コマンドを、"プロファイルを開く" と解釈します。シリアル化されたファイルを開くために [開く] を残しておきますが、このファイルは、ユーザーのログイン ID (必要に応じてパスワードを除く) やユーザーが最近使用したデータ ソースを含むユーザー設定などの "ユーザー プロファイル" 情報を含むシリアル化されたドキュメントを格納するために使用します。
MFC アプリケーション ウィザードでは、ドキュメント関連の [ファイル] メニュー コマンドがないアプリケーションの作成がサポートされています。 [データベース サポート] ページで [ファイル サポートのないデータベース ビュー] オプションを選択します。
[ファイル] メニュー コマンドを特別な方法で解釈するには、主に CWinApp
の派生クラスで 1 つ以上のコマンド ハンドラーをオーバーライドする必要があります。 たとえば、(ID_FILE_OPEN
コマンドを実装する) OnFileOpen
を完全にオーバーライドして、"データベースを開く" 操作を実現するには:
OnFileOpen
の基底クラス バージョンを呼び出してはいけません。それは、フレームワークのコマンドの既定の実装を完全に置き換えるためです。代わりにハンドラーを使用して、データ ソースを一覧表示するダイアログ ボックスを表示します。 このようなダイアログを表示するには、パラメーター NULL を指定して
CDatabase::OpenEx
またはCDatabase::Open
を呼び出します。 これにより、ユーザーのマシンで使用可能なすべてのデータ ソースを表示する ODBC ダイアログ ボックスが開きます。通常、データベース アプリケーションはドキュメント全体を保存しないため、シリアル化されたドキュメントを使用してプロファイル情報を保存する場合を除いて、[保存] および [名前を付けて保存] の実装を削除することをお勧めします。 それ以外の場合は、[保存] コマンドに "トランザクションのコミット" 操作を実装できます。これらのコマンドのオーバーライドの詳細については、テクニカル ノート 22 を参照してください。