MFC ドキュメントの関連付け
スケルトン作成時,ファイルの拡張子を指定しなかったプロジェクトに,後から関連付けのコードを追加する手順.
アプリケーションクラスの InitInstance に EnableShellOpen と RegisterShellFileTypes を追加.
BOOL CXxxxApp::InitInstance() { // ... AddDocTemplate(pDocTemplate); // DDE Execute open を使用可能にします。 EnableShellOpen(); RegisterShellFileTypes(TRUE); // DDE、file open など標準のシェル コマンドのコマンドラインを解析します。 CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // ... // メイン ウィンドウが初期化されたので、表示と更新を行います。 m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); // ドラッグ/ドロップ オープンを許可します m_pMainWnd->DragAcceptFiles(); return TRUE; }
必要に応じて,DragAccesptFiles .
リソースの String Table IDR_MAINFRAME で,ファイルタイプと拡張子を指定する.
文字列は 7 つに区切られている.CDocTemplate::GetDocString
最近の Windows は,RegisterShellFileTypes では登録できない.
そのため,自前の RegFileType::SetFileType(TRUE) を呼出す.
RegFType.hxx RegFType.cxx
RegisterShellFileTypes とは違い,HKEY_CURRENT_USER\Software\Classes\ に登録している.