资料:
一:直接看Rich Edit2.0的属性。
二:查看MSDN
三:网络资料。
回答者
VC_Edit_Control_VC中Edit Control控件的用法
简介摘要:; } 1.设置edit只读属性方法一:m_edit1.SetReadOnly(TRUE); 方法二:::SendMessage(m_edit1.m_hWnd, EM_SETREADONLY, TRUE, 0);2.判断edit中光标状态并得到选中内容(richedit同样适用)
; }
1.设置[she zhi]edit只读[zhi du]属性[shu xing][zhi du shu xing]
方法[fang fa]一:m_edit1.SetReadOnly(TRUE);
方法[fang fa]二:::SendMessage(m_edit1.m_hWnd,EM_SETREADONLY, TRUE, 0);
2.判断edit中光标[guangbiao]状态[zhuangtai]并得到选中内容(richedit同样适用)
int nStart, nEnd;
CString strTemp;
m_edit1.GetSel(nStart, nEnd);
if(nStart == nEnd)
{
strTemp.Format(_T(" 光标[guang biao]在%d" ), nStart);
AfxMessageBox(strTemp);
}
else
{
//得到edit选中的内容
m_edit1.GetWindowText(strTemp);
strTemp = strTemp.Mid(nStart) - strTemp.Mid(nEnd);
AfxMessageBox(strTemp);
}
注:GetSel后,如果nStart和nEnd,表明光标[guang biao]处于某个位置[wei zhi](直观来看就是光标[guang biao]在闪动);
如果nStart和nEnd不相等,表明用户[yonghu]在edit中选中了一段内容。
3.在edit最后添加字符[zifu]串[zi fuchuan]
CString str;
m_edit1.SetSel(-1, -1);
m_edit1.ReplaceSel(str);
4.随输入[shuru]自动滚动到最后一行(richedit同样适用)
方法[fang fa]一:(摘自msdn)
// The pointer to my edit.
extern CEdit* pmyEdit;
int nFirstVisible =pmyEdit-> GetFirstVisibleLine();
// Scroll the edit control so that the first visible line
// is the first line of text.
if (nFirstVisible > 0)
{
pmyEdit-> LineScroll(-nFirstVisible, 0);
}
方法[fang fa]二:m_richedit.PostMessage(WM_VSCROLL,SB_BOTTOM, 0);
5.如何限制edit输入[shu ru]指定字符[zifu]
可以从CEdit派生[paisheng]一个类,添加WM_CHAR消息[xiao xi]映射[yingshe]。下面一个例子实现了限定输入[shuru]16进制字符[zifu]的功能。
void CMyHexEdit::OnChar(UINTnChar, UINT nRepCnt, UINT nFlags)
{
if ( (nChar > = 0&& nChar < = 9) ||
(nChar > = a & & nChar < = f) ||
(nChar > = A && nChar < = F) ||
nChar == VK_BACK ||
nChar == VK_DELETE) //msdn的virtualkey
{
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
}
6.如何使用richedit
添加AfxInitRichEdit();
CxxxApp::InitInstance()
{
AfxInitRichEdit();
.............
}
AfxInitRichEdit()功能:装载RichEdit 1.0 Control (RICHED32.DLL).
7.如何使用richedit2.0or richedit3.0
使用原因:由于RichEdit2.0A自动为宽字符[zi fu](WideChar),所以它可以解决中文[zhong wen]乱码以及一些汉字问题[wen ti]
方法[fang fa]一:(msdn上的做法,适用于[yongyu]用vc.NET及以后版本创建的工程)
Toupdate 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 controlfrom " RICHEDIT" to " RichEdit20a" .
Then replace the call to AfxInitRichEdit with AfxInitRichEdit2.
方法[fang fa]二:以对话框[dui hua kuang]为例:
(1) 增加一全局变量[bianliang][quan ju bian liang] HMODULE hMod;
(2) 在CxxxApp::InitInstance()中添加一句hMod= LoadLibrary(_T(" riched20.dll" ));
在CxxxApp::ExitInstance()中添加一句FreeLibrary(hMod);
(3) 在对话框[duihua kuang]上放一个richedit,文本[wen ben]方式打开.rc文件[wen jian]修改[xiu gai]该richedit控件的类名" RICHEDIT" to " RichEdit20a" .
(4) 在对话框[duihua kuang]头文件[wen jian]添加 CRichEditCtrl m_richedit;
在OnInitDialog中添加 m_richedit.SubclassDlgItem(IDC_RICHEDIT1,this);
8.改变richedit指定区域[quyu]的颜色及字体[ziti]
CHARFORMAT cf;
ZeroMemory(&cf,sizeof(CHARFORMAT));
cf.cbSize =sizeof(CHARFORMAT);
cf.dwMask = CFM_BOLD |CFM_COLOR | CFM_FACE |
CFM_ITALIC | CFM_SIZE | CFM_UNDERLINE;
cf.dwEffects = 0;
cf.yHeight = 12*12; //文字[wen zi]高度
cf.crTextColor = RGB(200, 100,255); //文字[wen zi]颜色
strcpy(cf.szFaceName,_T(" 隶书" )); //设置[she zhi]字体[zi ti]
m_richedit1.SetSel(1, 5); //设置[she zhi]处理区域[quyu]
m_richedit1.SetSelectionCharFormat(cf);
9.设置[she zhi]行间距(只适用于[yongyu]richedit2.0)
PARAFORMAT2 pf;
pf2.cbSize =sizeof(PARAFORMAT2);
pf2.dwMask = PFM_LINESPACING |PFM_SPACEAFTER;
pf2.dyLineSpacing = 200;
pf2.bLineSpacingRule = 4;
m_richedit.SetParaFormat(pf2);
10.richedit插入位图[wei tu]
Q220844:How to insert a bitmap into an RTF documentusing the RichEdit control in Visual C++ 6.0
http://support.microsoft.com/default.aspx?scid=kb; en-us; 220844
http://www.codeguru.com/Cpp/controls/richedit/article.PHP/c2417/
http://www.codeguru.com/Cpp/controls/richedit/article.php/c5383/
11.richedit插入gif动画[dong hua]
http://www.codeproject.com/richedit/AnimatedEmoticon.asp
12.richedit嵌入ole对象[dui xiang]
http://support.microsoft.com/kb/141549/en-us
13.使richedit选中内容只读[zhidu]
http://www.codeguru.com/cpp/controls/richedit/article.php/c2401/
14.打印richedit
http://www.protext.com/MFC/RichEdit3.htm
15.richeidt用于[yong yu]聊天[liao tian]消息[xiao xi]窗口[chuang kou]
http://www.vckbase.com/document/viewdoc/?id=1087
http://www.codeproject.com/richedit/chatrichedit.asp
http://www.codeguru.com/Cpp/controls/richedit/article.php/c2395/
16.解决richedit的EN_SETFOCUS和EN_KILLFOCUS无响应[xiangying]的问题[wenti]
http://support.microsoft.com/kb/181664/en-us
17.richedit拼写检查
http://www.codeproject.com/com/AutoSpellCheck.asp
18.改变edit背景色[beijing se]
Q117778:How to change the background color of anMFC edit control
http://support.microsoft.com/kb/117778/en-us
19.当edit控件的父窗口[chuangkou]属性[shuxing]是带标题栏WS_CAPTION和子窗口[chuangkou][zi chuang kou]WS_CHILD时,不能设置[she zhi]焦点SetFocus
Q230587:PRB: Cant Set Focus to an Edit Control Whenits Parent Is an Inactive Captioned Child Window
http://support.microsoft.com/kb/230587/en-us
20. 在Edit中回车时,会退出[tuichu]对话框[duihua kuang]
选中Edit的风格WantReturn。
MSDN的解释[jie shi]如下:
ES_WANTRETURN Specifies that a carriage return be inserted whenthe user presses the ENTER key while entering text into a multiple-line editcontrol in a dialog box. Without this style, pressing the ENTER key has thesame effect as pressing the dialog boxs default pushbutton. This style has noeffect on a single-line edit control.
21. 动态[dongtai]创建的edit没有边框[biankuang]的问题[wenti]
m_edit.Create(....);
m_edit.ModifyStyleEx(0, WS_EX_CLIENTEDGE, SWP_DRAWFRAME);
22. 一个能显示[xianshi]RTF,ole(包括gif, wmv,excel ,ppt)的例子
http://www.codeproject.com/richedit/COleRichEditCtrl.asp
如何在RichEdit中实现上标下标
正文:
近来有好多朋友问如何在RichEdit中实现上标下标,查了好多资料都没找到。今天无意间在Delphi区闲逛,看到一份实现上下标的文章,于是整理成CB语言的贴出来。
以下代码已测试通过。在Form中放置一个RichEdit,两个Button,完整代码如下:
//--------------------------------------------------------------------------- typedef enum // 欢迎光临 C++ Builder 研究 http://www.ccrun.com |
在RichEdit中插入Bitmap
COleDataSource src;
STGMEDIUM sm;
sm.tymed=TYMED_GDI;
sm.hBitmap=hbmp;
sm.pUnkForRelease=NULL;
src.CacheData(CF_BITMAP, &sm);
LPDATAOBJECT lpDataObject =
(LPDATAOBJECT)src.GetInterface(&IID_IDataObject);
pRichEditOle->ImportDataObject(lpDataObject, 0, NULL);
lpDataObject->Release();
字体设置代码
最后添加字体变换函数:
CHARFORMAT cf;
LOGFONT lf;
memset(&cf, 0, sizeof(CHARFORMAT));
memset(&lf, 0, sizeof(LOGFONT));
//判断是否选择了内容
BOOL bSelect = (GetSelectionType() != SEL_EMPTY) ? TRUE : FALSE;
if (bSelect)
{
GetSelectionCharFormat(cf);
}
else
{
GetDefaultCharFormat(cf);
}
//得到相关字体属性
BOOL bIsBold = cf.dwEffects & CFE_BOLD;
BOOL bIsItalic = cf.dwEffects & CFE_ITALIC;
BOOL bIsUnderline = cf.dwEffects & CFE_UNDERLINE;
BOOL bIsStrickout = cf.dwEffects & CFE_STRIKEOUT;
//设置属性
lf.lfCharSet = cf.bCharSet;
lf.lfHeight = cf.yHeight/15;
lf.lfPitchAndFamily = cf.bPitchAndFamily;
lf.lfItalic = bIsItalic;
lf.lfWeight = (bIsBold ? FW_BOLD : FW_NORMAL);
lf.lfUnderline = bIsUnderline;
lf.lfStrikeOut = bIsStrickout;
sprintf(lf.lfFaceName, cf.szFaceName);
CFontDialog dlg(&lf);
dlg.m_cf.rgbColors = cf.crTextColor;
if (dlg.DoModal() == IDOK)
{
dlg.GetCharFormat(cf);//获得所选字体的属性
if(bSelect)
SetSelectionCharFormat(cf); //为选定的内容设定所选字体
else
SetWordCharFormat(cf); //为将要输入的内容设定字体
}
在RichEdit中实现超链接
在RichEdit中实现超链接 |
责任编辑:admin 在CBuilder上制作 更新日期:2005-8-6 |
|
首先在Form上放置一个RichEdit。 |
|
VC中RichEdit控件设置颜色为什么不起作用?
30
CHARFORMAT cf;
m_RichEdit.GetSelectionCharFormat(cf); //m_RichEdit为控件对应变量
cf.dwMask|=CFM_COLOR;
cf.crTextColor = RGB(200, 0, 0); //设置颜色
cf.dwMask|=CFM_SIZE;
cf.yHeight = 360;//设置高度
m_RichEdit.SetDefaultCharFormat(cf);
用这段代码设置RichEdit控件内字体和大小都起作用,但是设置颜色为什么不起作用呢?
问题补充 2009-08-1721:49
m_RichEdit.SetWindowText(m_strContent);
∮dz回答:1 人气:1 提问时间:2009-08-17 21:47
答案
要能保存颜色,即当打开一保存的文件后,该文件中的RICHEDIT控件中的字符串也会显示不同的 ... 用VC 创建一个Dialog在上面添加一个RichEdit控件
RichEdit问题如何在程序里向RichEdit输入文字以后始终显示最后面的 | ||
| ||
就象QQ的那个一样,自动换行,自动滚动,超过edit的大小以后自动滚动到最末端的文字显示???即使手动在那个信息框移动到最开始,但是再接受到新的信息,还是会自动滚动到最下面?
|
还是RichEdit地疑难
在RichEdit里面插入控件
重写了 IRichEditOleCallback接口
GetClipboardData
QueryAcceptData
................
如何处理控件的复制操作??
CRichEditCtrl::StreamOut
CRichEditCtrl::StreamIn
吗
?
这个问题第1个回答:
ding
这个问题第2个回答:
refer to:
http://www.vckbase.com/document/viewdoc/?id=328
这个问题第3个回答:
不好意思,问题未扫描清楚
就是复制控件后然后粘贴,使得粘贴后新的空间和复制的空间有完全一样的数据
通过流如何实现,可以在控件里面直接做吗?
COleControl::OnRenderData和
COleControl::OnSetData
有关系吗?
这个问题第4个回答:
还有点分,再加100
这个问题第5个回答:
IRichEditOleCallback接口不懂
如果你只需要将你Edit里面的图片剪切然后再贴回去可以使用这样的思路
假设你的Gif类为Cgif 这个类支持等号操作符。
也就是 Cgif gif1; Cgifgif2; 可以这样运算 gif1 = gif2;
那么建立一个CArray < Cgif,Cgif > gifBuffer;变量作为你Edit的自定义剪切板。
如果用户执行Cut操作你直接往gifBuffer中增加一个或多个Cut的Cgif对象 gifBuffer.Add();
执行Paste操作的时候再从gifBuffer中读出来还原给Edit。
当然我没有这么做过也不知道具体能不能实现不过我做过简单数据图形的赋值粘贴我就是这样将对象通过自定义的剪切板来完成的。
这个问题第6个回答:
STDMETHODIMP IRichEditOleCallbackImpl::GetNewStorage(LPSTORAGE FAR *lplpstg)
{
// Initialize a Storage Object from a DocFile in memory
LPLOCKBYTES lpLockBytes = NULL;
SCODE sc = ::CreateILockBytesOnHGlobal(NULL,TRUE, &lpLockBytes);
if (sc != S_OK) return sc;
sc = ::StgCreateDocfileOnILockBytes(lpLockBytes,STGM_SHARE_EXCLUSIVE|STGM_CREATE|STGM_READWRITE, 0, lplpstg);
if (sc != S_OK) lpLockBytes->Release();
return sc;
}
这个问题第7个回答:
GetNewStorage接口我也是这样写得
我还露了什么吗?
一样的代码直接调用QQ的DLL,QQ直接就能复制粘贴了,而我的不行
那就是控件写得不一样,我写得就是一个简单的显示GIF的OCX控件,从Colecontrol派生的类。
不对么?
一.常见问题
a.可以编译,不能执行的 AfxInitRichEdit();
b.升级默认的Riched版本(默认的有一些bug),如可在InitInstance中添加LoadLibrary("RICHED20.DLL") 最后注意 FreeLibrary
如果是CRichEditView基类的可用 BOOLCXXXXXXView::PreCreateWindow(CREATESTRUCT& cs){ //装入rich edit version2.0 if (LoadLibraryA("RICHED20.DLL") ==NULL) { AfxMessageBox(_T("Fail to load \"riched20.dll\"."),MB_OK |MB_ICONERROR); PostMessage(WM_QUIT,0,0); return FALSE; }
m_strClass = RICHEDIT_CLASSA;//for 2.0 class
return CRichEditView::PreCreateWindow(cs); }
c.最后追加行richeditctrl.SetSel(-1, -1); richeditctrl.ReplaceSel( (LPCTSTR)str );
d.字数限制 CRichEditCtrl::LimitText(longnChars)
e.换行切换
CRichEditView的OnInitialUpdate()函数中加入下面两句: m_nWordWrap =WrapNone; WrapChanged(); WrapChanged实际上也是调用 ctrl.SetTargetDevice(NULL, 1);//m_nWordWrap == WrapNone ctrl.SetTargetDevice(NULL, 0); //m_nWordWrap ==WrapToWindow 还有不常用的m_nWordWrap == WrapToTargetDevice ctrl.SetTargetDevice(m_dcTarget,GetPrintWidth()); 如果是在Dialog中,可使用SetTargetDevice,注意在属性里面加上want return
f.有时候不希望带格式的数据粘贴,可通过PasteSpecial选择性粘贴pmyRichEditCtrl->PasteSpecial(CF_TEXT);
g.随着输入随着自动滚动条滚动到最后一行 int nFirstVisible =pmyRichEditCtrl->GetFirstVisibleLine(); if (nFirstVisible > 0){ pmyRichEditCtrl->LineScroll(-nFirstVisible,0); } 或m_cRichEdit.PostMessage(WM_VSCROLL, SB_BOTTOM,0);
h.设置UNDO的次数(只能用在RICHED20以上,即默认不支持,必须升级)SendMessage(EM_SETTEXTMODE,TM_MULTILEVELUNDO,0); TM_MULTILEVELUNDO 支持多取消(默认值).可通过EM_SETUNDOLIMIT设置最大次数 SendMessage(EM_SETUNDOLIMIT,100,0);
i.响应OnChange EM_SETEVENTMASK 设置 ENM_CHANGE long lMask =GetEventMask(); lMask |= ENM_CHANGE; lMask &= ~ENM_PROTECTED;SetEventMask(lMask);
j.设置只读 CRichEditCtrl::SetReadOnly( BOOLbReadOnly = TRUE ); 通过设置PROTECTED实现选中的文本只读,参见 http://www.codeguru.com/Cpp/controls/richedit/article.php/c2401/
二.函数应用
a.设置字体(主要是通过SetSelectionCharFormat)
CHARFORMAT cf;
rich.GetSelectionCharFormat(cf);
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("隶书"));//设置字体
rich.SetSelectionCharFormat(cf);
b.设置字体的行间距
要用richedit2.0以上试试
PARAFORMAT2 pf;pf.cbSize = sizeof(PARAFORMAT2); pf.dwMask = PFM_NUMBERING | PFM_OFFSET;pf.wNumbering = PFN_BULLET;//注意PFM_NUMBERINGpf.dxOffset = 10; VERIFY(SetParaFormat(pf));
常用的dwMask有
1 PFM_NUMBERING 成员 wNumbering 才起作用,项目符号,默认用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 才起作用,缩进,单位twipsPFM_STARTINDENT 成员dxStartIndent 才起作用,首行缩进PFM_SPACEAFTER 成员dySpaceAfter 才起作用,段间距PFM_LINESPACING 成员dyLineSpacing 才起作用,行间距
c.设置CRichEditCtrl(2.0)背景透明 long style =::GetWindowLong(GetSafeHwnd(), GWL_EXSTYLE); style &= WS_EX_TRANSPARENT;::SetWindowLong(GetSafeHwnd(), GWL_EXSTYLE, style); 或 CreateEx,然后把WS_EX_TRANSPARENT样式加上
e.得到内容有三种
1)GetWindowText
2)使用EM_GETTEXTEX
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);
3)StreamOut(主要用于RTF等格式输出)
static DWORD CALLBACKMyStreamOutCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb){ CFile* pFile = (CFile*) dwCookie;
pFile->Write(pbBuff, cb);
*pcb = cb;
return 0; }
CFilecFile(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
f.查找字符串
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);
g.以Html格式保存
目前做法可先转为RTF格式,再通过RTF-to-HTML Converter http://www.codeguru.com/Cpp/controls/richedit/conversions/article.php/c5377/
h.重载OnProtected函数得到对应的消息,如粘贴等 voidCMYichEditorView::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; }
三.聊天常用
a.LINK 链接功能
1.LoadLibrary(_T("Riched20.dll"));
2. 创建RichEdit2.0控件
CreateEx(0,_T("RichEdit20A"),NULL, WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_TABSTOP|ES_READONLY|ES_WANTRETURN|ES_MULTILINE, rect.left, rect.top, cx, cy,pParentWnd->m_hWnd, (HMENU)nID, NULL);
3. 设定选中的文字为链接显示 CHARFORMAT2 cf2;ZeroMemory(&cf2, sizeof(CHARFORMAT2));// cf2.cbSize = sizeof(CHARFORMAT2);cf2.dwMask = CFM_LINK; cf2.dwEffects |= CFE_LINK;m_cRichEdit.SendMessage(EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf2);
4.支持链接的点击响应m_cRichEdit.SetEventMask(ENM_LINK);
5.响应链接的点击EN_LINKBEGIN_MESSAGE_MAP(CMyRichEdit, CRichEditCtrl) ON_NOTIFY_REFLECT(EN_LINK,OnURL)END_MESSAGE_MAP() ......
voidCMyRichEdit::OnURLClick(NMHDR *pNmhdr, LRESULT *pResult){ TCHARLinkChar[512]; ENLINK *pLink = (ENLINK*)pNmhdr; if (pLink->msg ==WM_LBUTTONUP) { SetSel(penLink->chrg);//这是链接的文字范围 long Res = GetSelText((char *)LinkChar);//这是链接文字 //后面是你的处理过程 ...... } }
b.插入位图 http://www.codeguru.com/Cpp/controls/richedit/article.php/c2417/http://www.codeguru.com/Cpp/controls/richedit/article.php/c5383/
自定义在RichEdit中插入对象的图标 http://www.blogcn.com/user3/jiangsheng/blog/1319738.html方法基本同KnowledgeBase文章Q220844HOWTO: Insert a Bitmap Into an RTF Document Using the RichEdit Control 只是在最后插入之前调用一下IOleCache::SetData,用一个HGLOBAL作为参数,HGLOBAL里面的数据是一个METAFILEPICT结构,包含自己提供的图片
使用CRichEditView::InsertFileAsObject就可以插入图像。VC++带有一个例子WordPad。另外可以参考“Insert any HBITMAP(Bitmap) in your RichEdit Control”(http://www.codeguru.com/richedit/richeditrc.html)。
c.显示GIF动画常用的是通过qq的imageole.dll(也有用Gif89.dll的) http://www.xiaozhou.net/cooldog/blogview.asp?logID=82http://www.codeproject.com/richedit/AnimatedEmoticon.asp
在richedit控件中插入动态GIF (Native C++版) http://blog.joycode.com/jiangsheng/archive/2004/12/15/41209.aspx
d.IRichEditOleCallback的使用 http://61.186.252.131/Expert/topic/905/905844.xml?temp=.8379022
类似 MSN 信息发送框的制作(上) http://www.vckbase.com/document/viewdoc/?id=1087内容包含:实现右键菜单,图片插入,读取/写入RTF格式字符串
自定义 CRichEditCtrl 控件 http://www.vckbase.com/document/viewdoc/?id=328内容包含:鼠标右键消息,消息映射,字体变换
PS.richedit控件升级到2.0后,先把字体设为楷体,输入汉字没有问题,但输入字母时,字母自动跳转为Arial字体,而1.0却没有这个文题,仍然是用楷体显示字母是一个专门的设计 Dual-font, Smartfont apply, 参见 http://61.186.252.131/Expert/topic/913/913807.xml?temp=.3753778
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/streamrxchina/archive/2008/07/08/2626241.aspx
转]Richedit使用大全一.常见问题 | |
UID 1 帖子 1783 精华 积分 1072 阅读权限 200 在线时间 1449 小时 注册时间 2006-4-4 最后登录 2008-12-14 | TOP |
佰锐科技 个人组 · 个人空间 · 发短消息 · 加为好友 · 当前在线 | 2#大中小发表于 2008-3-2 02:40 PM 只看该作者 注: |
UID 1 帖子 1783 精华 积分 1072 阅读权限 200 在线时间 1449 小时 注册时间 2006-4-4 最后登录 2008-12-14 | TOP |