VC++中HTControl控件类之CHTRichEdit富文本编辑控件实例
CHTRichEdit
是VC++中的一个HTControl控件类,用于实现富文本编辑功能。下面是使用这个控件的详细攻略:
第一步:添加控件
在使用CHTRichEdit
控件前,我们需要先将它添加到窗口中。具体操作如下:
- 在Resource View中找到想要添加控件的对话框或窗口,双击打开对应的窗口资源编辑器。
- 在工具箱中找到“ActiveX 控件”栏目,将“HTRichEdit控件”拖动至窗口中。
- 右键单击添加的控件,选择“属性”,在属性窗口中设置相应的属性。
第二步:初始化
初始化CHTRichEdit
控件需要调用Create
函数。示例如下:
BOOL CMyDialog::OnInitDialog()
{
CDialog::OnInitDialog();
// 初始化CHTRichEdit控件,m_richEdit为控件变量
m_richEdit.Create(WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE | ES_WANTRETURN,
CRect(0, 0, 0, 0), this, IDC_HTRICHEDIT);
return TRUE;
}
这里我们将CHTRichEdit
控件的风格设置为WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE | ES_WANTRETURN
,并指定了控件的位置和大小,最后将其加入到对话框中。
第三步:使用
使用CHTRichEdit
控件的方法与使用普通编辑框类似。以下是两个使用示例:
示例1:
在CHTRichEdit
控件中插入一段文本。
void CMyDialog::InsertText(const CString& strText)
{
int nLength = m_richEdit.SendMessage(WM_GETTEXTLENGTH);
m_richEdit.SendMessage(EM_SETSEL, nLength, nLength);
m_richEdit.SendMessage(EM_REPLACESEL, FALSE, (LPARAM)strText.GetString());
}
这个函数向CHTRichEdit
控件中插入一段字符串,并将光标移动到文本末尾。
示例2:
在CHTRichEdit
控件中插入一张图片。
void CMyDialog::InsertImage(const CString& strImagePath)
{
// 加载图片
DWORD dwSize = GetFileSize(strImagePath, NULL);
HANDLE hFile = CreateFile(strImagePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwSize);
void* lpData = GlobalLock(hGlobal);
DWORD dwBytesRead;
ReadFile(hFile, lpData, dwSize, &dwBytesRead, NULL);
GlobalUnlock(hGlobal);
CloseHandle(hFile);
// 插入图片
LPSTR szData = (LPSTR)GlobalLock(hGlobal);
FORMATETC fmte = { CF_ENHMETAFILE, NULL, DVASPECT_CONTENT, -1, TYMED_ENHMF };
STGMEDIUM stgm = { TYMED_ENHMF, { 0 }, NULL };
stgm.hMetaFilePict = ::SetEnhMetaFileBits(dwSize, (BYTE*)szData);
m_richEdit.SendMessage(EM_SETSEL, -1, -1);
m_richEdit.SendMessage(EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&fmte);
m_richEdit.SendMessage(EM_SETTEXTEX, (WPARAM)&stgm, 2);
GlobalUnlock(hGlobal);
GlobalFree(hGlobal);
}
这个函数从指定文件路径中加载图片到内存中,然后将图片插入到CHTRichEdit
控件中。
除了上述两个示例,CHTRichEdit
控件还有许多其他的功能,具体可参考MFC帮助文档中对该控件的介绍。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:VC++中HTControl控件类之CHTRichEdit富文本编辑控件实例 - Python技术站