MFC單文檔自定義擴展名及添加圖標報Assertion錯誤

突然無聊的想給本身寫的程序保存的文件使用本身的名字簡寫做爲後綴,因而有了下文。html


IDR_MAINFRAME格式介紹

IDR_MAINFRAME字符串資源中包含7個子串,分別以/n結束,即以下格式:.net

<windowTitle>/n<docName>/n<fileNewName>/n<filterName>/n<filterExt>/n<regFileTypeId>/n<regFileTypeName>/ndebug

  1. CDocTemplate::windowTitle,主窗口標題欄上的字符串,MDI程序不須要指定,將以IDR_MAINFRAME字符串爲默認值。
  2. CDocTemplate::docName,缺省文檔的名稱。若是沒有指定,缺省文檔的名稱是無標題。
  3. CDocTemplate::filterName,文檔類型的描述和一個適用於此類型的通配符過濾器。這個字符串將出如今「File/Open」對話框中的文件類型列表框中。要和CDocTemplate::filterExt一塊兒使用。
  4. CDocTemplate::filterExt,文檔的擴展名。若是沒有指定,就不可以在「File/Open」對話框中處理這種文檔。要和CDocTemplate::filterName一塊兒使用。
  5. CDocTemplate::regFileTypeId,若是你以::RegisterShellFileTypes向系統的註冊表註冊文件類型,此值會出如今HEY_CLASSES_ROOT之下成爲其子項,並僅供Windows內部使用。若是沒有指定,這種文件類型就沒法註冊。
  6. CDocTemplate::regFileTypeName,這也是存儲在註冊表中的文件類型名稱。它會顯示於程序中用以訪問註冊表的對話框內。

單文檔自定義保存文件名

  1. 在新建項目時,其中有一步會有advanced選項,可在裏面設置擴展名。
  2. 若是項目已經創建,而咱們又是使用系統自帶的文件保存,則能夠在資源視圖->String Table->String Table,找到ID爲IDR_MAINFRAME項進行修改。在第三個\n和第四個\n後輸入你須要的過濾符。
    如:CADProject\n\nCADProject\ntxt\n.txt\nCADProject.Document\nCADProject.Document(其中CADProject是項目名稱,擴展名txt)
  3. 添加多種擴展名.如添加txt和ini格式:CADProject\n\nCADProject\nFile(*.txt;*.ini)\n.txt;.ini\nCADProject.Document\nCADProject.Document。【注】filterExt使用分號";"隔開,分號後不帶空格

參考1
參考2
參考3code


修改ToolBar圖標緻使DEBUG ASSERTION錯誤

因爲toolbar上的圖標是經過複製粘貼的,因而在MainFrame中:htm

if (CMFCToolBar::GetUserImages() == NULL)
    {
        // load user-defined toolbar images
        if (m_UserImages.Load(_T(".\\UserImages.bmp")))
        {
            CMFCToolBar::SetUserImages(&m_UserImages);
        }
    }

出現debug assertion failed錯誤,解決辦法,修改成:blog

if (CMFCToolBar::GetUserImages() == NULL)
    {
        // load user-defined toolbar images
        if (m_UserImages.Load(_T(".\\UserImages.bmp")))
        {
            m_UserImages.SetImageSize(CSize(16, 16), FALSE);
            CMFCToolBar::SetUserImages(&m_UserImages);
        }
    }

具體緣由:
參考4
參考5ci

相關文章
相關標籤/搜索