在 MFC 對話框程式中唯讀顯示 Word (.doc/.docx) 內容,包含表格、圖片、格式,不需編輯功能。
// 初始化 RichEdit 庫(僅需一次,通常在 CWinApp::InitInstance)
AfxInitRichEdit2(); // 或 AfxInitRichEdit()
// 在對話框 OnInitDialog 載入
void CMyDialog::OnInitDialog()
{
CDialog::OnInitDialog();
CRichEditCtrl& rich = m_richEdit; // DDX 綁定的控件
rich.SetReadOnly(TRUE);
// 方法 1:StreamIn 載入 RTF 檔案
EDITSTREAM es = {0};
es.dwCookie = (DWORD_PTR)&fileStream; // CFile 或 CStdioFile
es.pfnCallback = MyStreamInCallback;
rich.StreamIn(SF_RTF, es);
// 方法 2:直接設定 RTF 文字(若內容較小)
// CString rtf = LoadRtfFromFile(_T("doc.rtf"));
// rich.SetWindowText(rtf); // 需配合 EM_STREAMIN 正確處理
}
| 方案 | 優點 | 缺點 | 適合場景 |
|---|---|---|---|
| RichEdit + RTF | 原生 MFC、輕量、支援表格/圖片/基本排版 | 複雜 Word 排版可能遺失 | 唯讀顯示、文檔預覽 |
| WebBrowser 控件 + HTML | 渲染保真度高(Word 存為 HTML) | 依賴 IE 內核、重、安全限制 | 需高保真、可接受依賴 |
| OLE 自動化 Word Application | 完美渲染、可編輯 | 需安裝 Word、極慢、授權問題、進程殘留風險 | 極少見、不推薦 |
| 第三方庫 | 功能強大 | 商業授權、體積大 | 企業級文檔處理 |