IDR_MAINFRAME 是 MFC 應用程序主框架資源的標準標識符,其字符串資源包含 7 個以 \n 分隔的子串,定義了窗口標題、文檔類型、文件對話框過濾器等核心信息。
\n
\n
\n
\n
\n
\n
\n
| 序號 | 字段名 | 對應 CDocTemplate 成員 | 用途與顯示位置 |
|---|---|---|---|
| 1 | WindowTitle | windowTitle | 主框架窗口標題欄文本 (SDI)。MDI 程序忽略,使用框架窗口類默認標題。 |
| 2 | DocName | docName | 新建文檔的默認名稱 (如「無標題」)。未指定時默認為「無標題」。 |
| 3 | FileNewName | fileNewName | 「文件→新建」對話框中顯示的文檔類型名稱。多文檔類型程序必填,否則該類型不出現在列表中。 |
| 4 | FilterName | filterName | 「文件→打開/另存為」對話框「文件類型」下拉框顯示的描述,需包含過濾器 (如「文本文件 (*.txt)|*.txt||」)。需與 FilterExt 配合。 |
| 5 | FilterExt | filterExt | 默認文件擴展名 (如「txt」)。無擴展名則無法在文件對話框中正確過濾/保存。需與 FilterName 配合。 |
| 6 | RegFileTypeId | regFileTypeId | 系統註冊表 HKEY_CLASSES_ROOT 下的文件類型 ProgID (如「MyApp.Document.1」)。供 Windows Shell 內部使用。未指定則無法註冊文件關聯。 |
| 7 | RegFileTypeName | regFileTypeName | 註冊表中顯示的友好類型名稱 (如「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||。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 正確分段是關鍵。