由於AfxInitRichEdit() 裝載的是 RichEdit 1.0 Control (RICHED32.DLL),該版本BUG較多,需要在裝載3.0的控制項。方法如下:
以對話方塊為例:
(1) 增加一全域變數 HMODULE hMod;
(2) 在CxxxApp::InitInstance()中添加一句hMod = LoadLibrary(_T("riched32.dll"));
在CxxxApp::ExitInstance()中添加一句FreeLibrary(hMod);
(3) 在對話方塊上放一個richedit,文本方式開啟.rc檔案修改該richedit控制項的類名"RICHEDIT" to "RichEdit20a".
如果對話方塊不出現,則在添加 AfxInitRichEdit 方法。
VC.NET以後版本:(msdn上的做法,適用於用VC.NET及以後版本建立的工程)
To update rich edit controls in existing Visual C++ applications to version 2.0,
open the .RC file as text, change the class name of each rich edit control from "RICHEDIT" to "RichEdit20a".
Then replace the call to AfxInitRichEdit with AfxInitRichEdit2.
動態載入richedit2.0:
在標頭檔中定義:
#define _RICHEDIT_VER 0x0300
#if (_RICHEDIT_VER >= 0x0200 )
#ifdef UNICODE
#define RICHEDIT_CLASS RICHEDIT_CLASSW
#else
#define RICHEDIT_CLASS RICHEDIT_CLASSA
#endif /* UNICODE */
#else
#define RICHEDIT_CLASS RICHEDIT_CLASS10A
#endif /* _RICHEDIT_VER >= 0x0200 */
則可以使用動態載入richedit:
CRichEditCtrl::CreateEx(NULL,RICHEDIT_CLASS,NULL, dwStyle&~WS_BORDER, rect, pParentWnd, nID);
申明:該控制項可以免費使用。禁止惡意修改控制項的版本資訊。
DEMO下載:http://sv004d.mofile.com/7125120180791962/RGlzazEvNTQvNTQyNzI4MTQyMC83Lzc0OTQ0NjQwNjA4NjQ1Nw../TestGif.rar