如何在CRichEditView中使用RichEditControl 4.1
展开全部
Windows RichEdit控件的最新版本是4.1。然而,MFC框架中仍旧使用老版本的控件。例如MFC6.0使用的是RichEdit控件版本1,相当落后,甚至新的Visual Studio 2005-2010中附带的MFC也仅适用RichEdit控件 版本2或版本3。
如何解决这个问题?
为了在MFC类CRichEditView中使用RichEdit控件4.1 ,并享受其新的功能,我们可以做以下步骤:
第1步
在MFC应用程序类(从CWinApp派生)加载的MSFTEDIT.DLL的库模块,其中包含RichEdit控件4.1。
BOOL CRichEdit41App::InitInstance()
{
// Load RichEdit 4.1 library
HMODULE hRE41Module = ::LoadLibrary(_T("MSFTEDIT.DLL"));
if(NULL == hRE41Module)
{
AfxMessageBox(_T("RichEdit 4.1 library could not be loaded"));
return FALSE;
}
// ...
}
第2步
在MFC视图类(从CRichEditView的派生)的构造函数中,为4.1 RichEdit设置窗口类名为“RICHEDIT50W”。
// Note: MSFTEDIT_CLASS is not defined in MFC6.0 and older
#ifndef MSFTEDIT_CLASS
#define MSFTEDIT_CLASS L"RICHEDIT50W";
#endif
CRichEdit41View::CRichEdit41View()
{
m_strClass = MSFTEDIT_CLASS;
}
第3步
在WM_DESTROY消息处理函数中,删除基类的方法调用。
注:这一步在MFC 6.0及更老版本中是必须的。
void CRichEdit41View::OnDestroy()
{
// CRichEditView::OnDestroy(); // <-- move this line below
COleClientItem* pActiveItem = GetDocument()->GetInPlaceActiveItem(this);
if (pActiveItem != NULL && pActiveItem->GetActiveView() == this)
{
pActiveItem->Deactivate();
ASSERT(GetDocument()->GetInPlaceActiveItem(this) == NULL);
}
CRichEditView::OnDestroy(); // <-- moved from above
}
如何解决这个问题?
为了在MFC类CRichEditView中使用RichEdit控件4.1 ,并享受其新的功能,我们可以做以下步骤:
第1步
在MFC应用程序类(从CWinApp派生)加载的MSFTEDIT.DLL的库模块,其中包含RichEdit控件4.1。
BOOL CRichEdit41App::InitInstance()
{
// Load RichEdit 4.1 library
HMODULE hRE41Module = ::LoadLibrary(_T("MSFTEDIT.DLL"));
if(NULL == hRE41Module)
{
AfxMessageBox(_T("RichEdit 4.1 library could not be loaded"));
return FALSE;
}
// ...
}
第2步
在MFC视图类(从CRichEditView的派生)的构造函数中,为4.1 RichEdit设置窗口类名为“RICHEDIT50W”。
// Note: MSFTEDIT_CLASS is not defined in MFC6.0 and older
#ifndef MSFTEDIT_CLASS
#define MSFTEDIT_CLASS L"RICHEDIT50W";
#endif
CRichEdit41View::CRichEdit41View()
{
m_strClass = MSFTEDIT_CLASS;
}
第3步
在WM_DESTROY消息处理函数中,删除基类的方法调用。
注:这一步在MFC 6.0及更老版本中是必须的。
void CRichEdit41View::OnDestroy()
{
// CRichEditView::OnDestroy(); // <-- move this line below
COleClientItem* pActiveItem = GetDocument()->GetInPlaceActiveItem(this);
if (pActiveItem != NULL && pActiveItem->GetActiveView() == this)
{
pActiveItem->Deactivate();
ASSERT(GetDocument()->GetInPlaceActiveItem(this) == NULL);
}
CRichEditView::OnDestroy(); // <-- moved from above
}
网易云信
2023-12-06 广告
2023-12-06 广告
UIkit是一套轻量级、模块化且易于使用的开源UI组件库,由YOOtheme团队开发。它提供了丰富的界面元素,包括按钮、表单、表格、对话框、滑块、下拉菜单、选项卡等等,适用于各种类型的网站和应用程序。UIkit还支持响应式设计,可以根据不同...
点击进入详情页
本回答由网易云信提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询