CRichEditCtrl系列讲堂5 常用函数应用
来源:互联网 发布:php代码大全 编辑:程序博客网 时间:2024/06/10 14:09
函数应用
1. 设置RichEdit控件的显示字体
CHARFORMAT cf;
ZeroMemory(&cf, sizeof(CHARFORMAT));
cf.cbSize = sizeof(CHARFORMAT);
cf.dwMask|=CFM_BOLD;
cf.dwEffects|=CFE_BOLD; //粗体,取消用cf.dwEffects&=~CFE_BOLD; cf.dwMask|=CFM_ITALIC;
cf.dwEffects|=CFE_ITALIC; //斜体,取消用cf.dwEffects&=~CFE_ITALIC;
cf.dwMask|=CFM_UNDERLINE;
cf.dwEffects|=CFE_UNDERLINE; //斜体,取消用cf.dwEffects&=~CFE_UNDERLINE;
cf.dwMask|=CFM_COLOR;
cf.crTextColor = RGB(255,0,0); //设置颜色
cf.dwMask|=CFM_SIZE;
cf.yHeight =200; //设置高度
cf.dwMask|=CFM_FACE;
strcpy(cf.szFaceName ,_T("隶书")); //设置字体
CRichEditCtrl.SetSelectionCharFormat(cf);
2.设置RichEdit控件的显示字体的行间距(只能用在RICHED20以上)
PARAFORMAT2 pf;
pf.cbSize = sizeof(PARAFORMAT2);
pf.dwMask = PFM_NUMBERING | PFM_OFFSET;
pf.wNumbering = PFN_BULLET; //注意PFM_NUMBERING
pf.dxOffset = 10;
VERIFY(SetParaFormat(pf));
常用的dwMask有如下列表:
PFM_NUMBERING 成员 wNumbering 才起作用
1 项目符号,默认用PFN_BULLET.
2 使用阿拉伯数字 (1, 2, 3, ...).
3 使用小写字母 (a, b, c, ...).
4 使用大写字母 (A, B, C, ...).
5 使用小写罗马数字 (i, ii, iii, ...).
6 使用大写罗马数字 (I, II, III, ...).
7 自定义,字符见成员 wNumberingStart.
PFM_OFFSET 成员 dxOffset 才起作用,缩进,单位twips
PFM_STARTINDENT 成员 dxStartIndent 才起作用,首行缩进
PFM_SPACEAFTER 成员 dySpaceAfter 才起作用,段间距
PFM_LINESPACING 成员 dyLineSpacing 才起作用,行间距
3.设置RichEdit控件的透明背景(只能用在RICHED20以上)
long style = ::GetWindowLong(GetSafeHwnd(), GWL_EXSTYLE);
style &= WS_EX_TRANSPARENT;
::SetWindowLong(GetSafeHwnd(), GWL_EXSTYLE, style);
或 CreateEx(),然后把WS_EX_TRANSPARENT样式加上
4.获取或者写入RichEdit控件的内容
Ø
Ø
GETTEXTEX gt;
gt.cb = 200;
gt.flags = GT_DEFAULT;
gt.codepage = CP_ACP ;
gt.lpDefaultChar = NULL;
gt.lpUsedDefChar = NULL;
SendMessage(EM_GETTEXTEX,(WPARAM)>,(LPARAM)text);
Ø
static DWORD CALLBACK;
MyStreamOutCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
CFile* pFile = (CFile*) dwCookie;
pFile->Write(pbBuff, cb);
*pcb = cb;
return 0;
}
CFile cFile(TEXT("myfile.rtf"), CFile::modeCreate|CFile::modeWrite);
EDITSTREAM es;
es.dwCookie = (DWORD) &cFile; //设置用例参数,以便回调函数调用
es.pfnCallback = MyStreamOutCallback;
pmyRichEditCtrl->StreamOut(SF_RTF, es);
读入可以此类推,SetWindowText, EM_SETTEXTEX, StreamIn
5.查找RichEdit控件中的字符串
FINDTEXTEX ft;
ft.chrg.cpMin = 0;
ft.chrg.cpMax = -1;
ft.lpstrText = "|";
long lPos = FindText(0, &ft);
如果要继续查找,修改cpMin,如
int nCount = 0;
do
{
long lPos = GetRichEditCtrl().FindText(0, &ft);
if( -1 == lPos) break;
ft.chrg.cpMin = lPos + strlen(ft.lpstrText);
++nCount;
}while(TRUE);
6. 以Html格式保存RichEdit控件中的内容
临时做法可先转为RTF格式,再通过RTF-to-HTML Converter,参考如下文章:
http://www.codeguru.com/Cpp/controls/richedit/conversions/article.php/c5377/8.
void CRichEditorView::OnProtected(NMHDR* pNMHDR, LRESULT* pResult)
{
ENPROTECTED* pEP = (ENPROTECTED*)pNMHDR;
switch (pEP->msg)
{
case WM_KEYDOWN: //按键,判断pEP->wParam
case WM_PASTE: //粘贴
case WM_CUT: //剪切
case EM_SETCHARFORMAT:
default:
break;
};
*pResult = FALSE;
}
- CRichEditCtrl系列讲堂5 常用函数应用
- CRichEditCtrl系列讲堂6 一些小技巧
- CRichEditCtrl系列讲堂2 查找功能的实现
- CRichEditCtrl系列讲堂3 关于版本和查找错位问题
- CRichEditCtrl系列讲堂7 设置行间距源代码
- CRichEditCtrl系列讲堂1 VC中在对话框上使用Rich Edit控件相关问题
- CRichEditCtrl系列讲堂4 自己遇到的查找问题及解决方案
- CRichEditCtrl系列讲堂8 解决CEdit/CRichEdit中SetSel错位或者位置判断错误的问题
- CRichEditCtrl相关应用技巧收集
- CRichEditCtrl
- CRichEditCtrl
- CRichEditCtrl
- CRichEditCtrl
- 横秋扫盲系列(4): CRichEditCtrl 超文本编辑(MSN/QQ常用控件) -- 2005-08-28 21:13:15
- 常用系列函数1
- 常用系列函数2
- 常用系列函数3
- mysql系列:常用函数
- C#开发自己的Web服务器
- Inventor 2014 API 新功能 (4) 创建方程草图曲线
- Sicily 1031 Campus
- 如何选择下载版本,简体中文 GBK 与UTF-8 的区别
- 排序算法
- CRichEditCtrl系列讲堂5 常用函数应用
- fs_mini.yaffs2问题系统映像的制作
- 亲测VS2010纯静态编译QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序
- javascript:history.go()和History.back()的区别(转载)
- python中xrange和range的异同
- 字符串中的最长回文字符
- 9000万人点“赞”?病毒制造假人气,山寨Adobe Flash Player插件夹带病毒
- Android教程(十)-- Spinner下拉框的使用
- CRichEditCtrl系列讲堂6 一些小技巧