以MFC向导建立的多文档程序为例,
假设你的工程名字为MyApp,那么生成的RichEdit视图类,应该是以下的样子(它派生自CRichEditView):
class CMyAppView : public CRichEditView
{
...
}
因为VC6的MFC4.2中,捆绑的是RichEdit1.0,为了用新版本替换这早已经过时的版本,只需要进行以下步骤:
1.在CMyAppView类的构造函数中,添加下面的一句:
CMyAppView::CMyAppView()
{
m_strClass=TEXT("RichEdit50W");//添加这一句
...
}
2.在应用程序一开始的地方,加载对应版本的RichEdit所在的DLL。在这里,我们要使用RichEdit50W,那么就要加载msftedit.dll。
CMyApp::CMyApp()
{
CoInitialize(NULL); //必须首先调用
//m_hinstRE41是我们自己需要添加的CMyApp的一个成员变量
m_hinstRE41=LoadLibrary(TEXT("msftedit.dll"));//添加这一句
...
}
CMyApp::~CMyApp()
{
if(m_hinstRE41)
FreeLibrary(m_hinstRE41);
}
CMyApp::InitInstance()
{
AfxOleInit(); //OLE初始化,必须要添加
AfxEnableControlContainer(); //也要添加这一行
...
}
3.大功告成。其他什么工作都不需要做了。
接下来的诸如高级格式化、复制粘贴图片、对象等等,都由MFC的框架为我们完成了。也完全不需要去自己手工控制Richedit的创建以及控件消息的处理。
我自己也曾经想过要重新封装一个高版本的RichEdit控件,但是后来找到这个方法后,我自己也惊异于此法之简单便捷。以上这些是本人的一点点研究成果,有兴趣的朋友可以移步 CodeProject.com,在那里我有详细的原理解释。
链接:http://www.codeproject.com/KB/edit/UseRichEdit50.aspx
原创文章,转载请注明!