VC檔案關聯小結

來源:互聯網
上載者:User

最近的工程中要用到了vc中關於檔案關聯的操作,費了不少周折,這裡就簡單做一個小結。

 

(1)使用EnableShellOpen自動完成註冊表的註冊資訊

這種情況下,只需要在CWinApp子類的InitInstance函數中添加如下代碼就行

// Enable DDE Execute open
 EnableShellOpen();
 RegisterShellFileTypes(TRUE);

通常情況下,也有加上這句的必要

// Enable drag/drop open
 m_pMainWnd->DragAcceptFiles();

下面以MDI為例,說明幾個需要注意的地方:

一、需要修改string table中的IDR_FFTYPE值,來定義預設的文件類型,如

/nFf/nFf/nFf 檔案 (*.ff)/n.ff/nFf.Document/nFf Document

其中第三個參數是在開啟/儲存對話方塊中檔案類型顯示的提示資訊,第四個參數是你自訂的檔案類型的尾碼名稱。

二、也可以在程式產生嚮導的第四步中定義你的文件類型,而不需要再進行上面“一”的操作。

三、不同的工程最好是定義不同的自訂檔案類型,否則同一個檔案類型在註冊表中可能會產生資料混亂的現象,從而可能導致程式的不正常關聯。

四、若要自訂自己的關聯程式的表徵圖,第一步需要將自訂的ico檔案覆蓋掉res檔案夾下預設的IDR_FFTYPE對應的資源檔;第二步,刪除工程目錄下的aps檔案,清空二進位備份,重新載入工程即可。

(2)編輯一個註冊表檔案來實現關聯

REGEDIT
; This .REG file may be used by your SETUP program.
;   If a SETUP program is not available, the entries below will be
;   registered in your InitInstance automatically with a call to
;   CWinApp::RegisterShellFileTypes and COleObjectFactory::UpdateRegistryAll.

HKEY_CLASSES_ROOT/.ff = Ff.Document
HKEY_CLASSES_ROOT/SingleInstMDI.Document/shell/open/command = ff.EXE %1
HKEY_CLASSES_ROOT/SingleInstMDI.Document/shell/open/ddeexec = [open("%1")]
HKEY_CLASSES_ROOT/SingleInstMDI.Document/shell/open/ddeexec/application = ff
    ; note: the application is optional
    ;  (it defaults to the app name in "command")

HKEY_CLASSES_ROOT/Ff.Document = Ff Document

 

自訂一個reg檔案,內容類別似上面的描述。雙擊執行,匯入到自己機器的註冊表中去即可。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.