首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

MFC IDR_MAINFRAME 字符串資源詳解:七段式結構與各字段含義

     編輯:關於C語言

IDR_MAINFRAME:MFC 框架窗口的核心字符串資源

IDR_MAINFRAME 是 MFC 應用程序主框架資源的標準標識符,其字符串資源包含 7 個以 \n 分隔的子串,定義了窗口標題、文檔類型、文件對話框過濾器等核心信息。

字符串結構格式


\n
\n
\n
\n
\n
\n
\n

七段字段詳細含義

序號字段名對應 CDocTemplate 成員用途與顯示位置
1WindowTitlewindowTitle主框架窗口標題欄文本 (SDI)。MDI 程序忽略,使用框架窗口類默認標題。
2DocNamedocName新建文檔的默認名稱 (如「無標題」)。未指定時默認為「無標題」。
3FileNewNamefileNewName「文件→新建」對話框中顯示的文檔類型名稱。多文檔類型程序必填,否則該類型不出現在列表中。
4FilterNamefilterName「文件→打開/另存為」對話框「文件類型」下拉框顯示的描述,需包含過濾器 (如「文本文件 (*.txt)|*.txt||」)。需與 FilterExt 配合。
5FilterExtfilterExt默認文件擴展名 (如「txt」)。無擴展名則無法在文件對話框中正確過濾/保存。需與 FilterName 配合。
6RegFileTypeIdregFileTypeId系統註冊表 HKEY_CLASSES_ROOT 下的文件類型 ProgID (如「MyApp.Document.1」)。供 Windows Shell 內部使用。未指定則無法註冊文件關聯。
7RegFileTypeNameregFileTypeName註冊表中顯示的友好類型名稱 (如「MyApp 文檔」)。出現在「打開方式」列表、屬性對話框中。

實際資源編輯器示例


// 字符串資源表中 IDR_MAINFRAME 值 (換行符顯示為 \n)
My Application\n
My Document\n
My Document (*.myd)\n
My Document (*.myd)|*.myd||\n
myd\n
MyApp.Document.1\n
MyApp Document\n

關鍵注意事項

  • 分隔符必須為 \n (兩字符:反斜杠 + n),資源編輯器中輸入時按 Ctrl+Enter 換行,自動轉為 \n。
  • 七段缺一不可,即使為空也需保留佔位 \n,否則解析錯位。
  • FilterName 格式:描述|過濾器模式||,雙竖線結束。多過濾器用 | 分隔:文本|*.txt|源碼|*.c;*.h||。
  • MDI 程序:WindowTitle 不用於主框架,但子框架文檔模板仍需各自的 IDR_... 資源。
  • 調用 RegisterShellFileTypes(TRUE) 時,第 6、7 段生效,將文件類型寫入系統註冊表。

動態修改標題相關


// 修改窗口標題 (第1段)
m_pMainWnd->SetWindowText(_T("新標題"));

// 修改文檔名稱 (第2段) - 在 CDocument 派生類中
void CMyDoc::SetTitle(LPCTSTR lpszTitle) {
    CDocument::SetTitle(lpszTitle); // 更新第2段
}

// 移除標題中「文檔名 - 應用名」的分隔符
// 重寫 CFrameWnd::OnUpdateFrameTitle
void CMainFrame::OnUpdateFrameTitle(BOOL bAddToTitle) {
    CString strTitle = _T("自定義標題");
    SetWindowText(strTitle);
}

總結

IDR_MAINFRAME 字符串資源是 MFC 文檔/視圖架構的配置中樞。理解七段式結構、各段對應 CDocTemplate 成員、文件對話框過濾器格式、註冊表關聯字段,能精確控制應用程序的用戶可見標識與文件關聯行為。資源編輯器中按 Ctrl+Enter 正確分段是關鍵。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved