




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
资料:一:直接看Rich Edit 2.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 zhiedit只读zhi du属性shu xingzhi du shu xing 方法fang fa一:m_edit1.SetReadOnly(TRUE); 方法fang fa二::SendMessage(m_edit1.m_hWnd, EM_SETREADONLY, TRUE, 0); 2.判断edit中光标guang biao状态zhuang tai并得到选中内容(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不相等,表明用户yong hu在edit中选中了一段内容。3.在edit最后添加字符zi fu串zi fu chuan CString str; m_edit1.SetSel(-1, -1); m_edit1.ReplaceSel(str); 4.随输入shu ru自动滚动到最后一行(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指定字符zi fu 可以从CEdit派生pai sheng一个类,添加WM_CHAR消息xiao xi映射ying she。下面一个例子实现了限定输入shu ru16进制字符zi fu的功能。 void CMyHexEdit:OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) if ( (nChar = 0 & nChar = a & & nChar = A & nChar Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(&Format);/-/ 先选中Richedit中的部分文本,然后点击此按钮,选中文本将变成上标void _fastcall TForm1:Button1Click(TObject *Sender) / 上标 MySetCharFormat(RichEdit1, CFM_Superscript);/-/ 先选中Richedit中的部分文本,然后点击此按钮,选中文本将变成下标void _fastcall TForm1:Button2Click(TObject *Sender) / 下标 MySetCharFormat(RichEdit1, CFM_Subscript);在RichEdit中插入BitmapCOleDataSource 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。在窗体的构造函数中添加以下代码:_fastcall TMainForm:TMainForm(TComponent* Owner) : TForm(Owner) unsigned mask = SendMessage(RichEdit1-Handle, EM_GETEVENTMASK, 0, 0); SendMessage(RichEdit1-Handle, EM_SETEVENTMASK, 0, mask | ENM_LINK); SendMessage(RichEdit1-Handle, EM_AUTOURLDETECT, true, 0); /自动检测URL RichEdit1-Text = 欢迎访问C+ Buildern 网址: n 偶的信箱:n mailto: n 嘿嘿n;重载窗体的WndProc1。在.h中添加: protected: virtual void _fastcall WndProc(Messages:TMessage &Message);2。在.cpp中添加:/-void _fastcall TMainForm:WndProc(Messages:TMessage &Message) if (Message.Msg = WM_NOTIFY) if (LPNMHDR)Message.LParam)-code = EN_LINK) ENLINK* p = (ENLINK *)Message.LParam; if (p-msg = WM_LBUTTONDOWN) SendMessage(RichEdit1-Handle, EM_EXSETSEL, 0, (LPARAM)&(p-chrg); ShellExecute(Handle, open, RichEdit1-SelText.c_str(), 0, 0, SW_SHOWNORMAL); TForm:WndProc(Message);VC中RichEdit控件设置颜色为什么不起作用?30标签:vc,richedit,控件设置 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-17 21:49m_RichEdit.SetWindowText(m_strContent);dz 回答:1 人气:1 提问时间:2009-08-17 21:47 答案要能保存颜色,即当打开一保存的文件后,该文件中的RICHEDIT控件中的字符串也会显示不同的 . 用VC 创建一个Dialog在上面添加一个RichEdit控件RichEdit问题如何在程序里向RichEdit输入文字以后始终显示最后面的就象QQ的那个一样,自动换行,自动滚动,超过edit的大小以后自动滚动到最末端的文字显示?即使手动在那个信息框移动到最开始,但是再接受到新的信息,还是会自动滚动到最下面?需要什么风格吗?大家看看我的代码:voidCOnlyReadRichEdit:AddText(CStringstrTextIn,CHARFORMATcf)intiTotalTextLength=GetWindowTextLength();SetSel(iTotalTextLength,iTotalTextLength);strTextIn+=n;ReplaceSel(LPCTSTR)strTextIn);intiStartPos=iTotalTextLength;intiEndPos=GetWindowTextLength();SetSel(iStartPos,iEndPos);SetSelectionCharFormat(cf);HideSelection(TRUE,FALSE);LineScroll(1);voidCOnlyReadRichEdit:AddNameTime(CStringstrName,CTimetime,COLORREFcrNewColor)strName+=;CStringstrTime;strTime.Format(%.2d:%.2d:%.2dn,time.GetHour(),time.GetMinute(),time.GetSecond();strName+=strTime;intiTotalTextLength=GetWindowTextLength();SetSel(iTotalTextLength,iTotalTextLength);ReplaceSel(LPCTSTR)strName);intiStartPos=iTotalTextLength;/FormatingthestringthatwillbechangedCHARFORMATcf;memset(&cf,0,sizeof(CHARFORMAT);cf.cbSize=sizeof(CHARFORMAT);cf.dwMask=CFM_COLOR|CFM_BOLD;cf.dwEffects=CFE_BOLD;cf.crTextColor=crNewColor;/RGB(0,0,255);intiEndPos=GetWindowTextLength();SetSel(iStartPos,iEndPos);SetSelectionCharFormat(cf);SetSel(iEndPos,iEndPos);ReplaceSel(_T();-把最后选中,然后发EM_SCROLLCARET应该就可以了吧.没试过-感谢_i_!我把代码改成这样在单个tab的标签下就行了,我再严格测试一下,因为我是在一个tab上共享一个edit,不同tab的标签却换的时候我要更新不同的内容.voidCOnlyReadRichEdit:AddText(CStringstrTextIn,CHARFORMATcf)intiTotalTextLength=GetWindowTextLength();SetSel(iTotalTextLength,iTotalTextLength);strTextIn+=n;ReplaceSel(LPCTSTR)strTextIn);intiStartPos=iTotalTextLength;intiEndPos=GetWindowTextLength();SetSel(iStartPos,iEndPos);SetSelectionCharFormat(cf);HideSelection(TRUE,FALSE);SetSel(iEndPos,iEndPos);/修改SendMessage(EM_SCROLLCARET);/修改还是RichEdit地疑难在RichEdit里面插入控件重写了 IRichEditOleCallback接口 GetClipboardData QueryAcceptData . 如何处理控件的复制操作? CRichEditCtrl:StreamOut CRichEditCtrl:StreamIn 吗 ? 这个问题第1个回答:ding 这个问题第2个回答:refer to: /document/viewdoc/?id=328 这个问题第3个回答:不好意思,问题未扫描清楚 就是复制控件后然后粘贴,使得粘贴后新的空间和复制的空间有完全一样的数据 通过流如何实现,可以在控件里面直接做吗? COleControl:OnRenderData和 COleControl:OnSetData 有关系吗? 这个问题第4个回答:还有点分,再加100 这个问题第5个回答:IRichEditOleCallback接口不懂 如果你只需要将你Edit里面的图片剪切 然后再贴回去 可以使用这样的思路 假设你的Gif类为Cgif 这个类支持等号操作符。 也就是 Cgif gif1; Cgif gif2; 可以这样运算 gif1 = gif2; 那么建立一个CArray 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基类的可用 BOOL CXXXXXXView:PreCreateWindow(CREATESTRUCT& cs) /装入rich edit version 2.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(long nChars)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 returnf.有时候不希望带格式的数据粘贴,可通过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( BOOL bReadOnly = TRUE ); 通过设置PROTECTED实现选中的文本只读,参见 /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_NUMBERING pf.dxOffset = 10; VERIFY(SetParaFormat(pf); 常用的dwMask有1 PFM_NUMBERING 成员 wNumbering 才起作用,项目符号,默认用PFN_BULLET 2 使用阿拉伯数字 (1, 2, 3, .). 3 使用小写字母 (a, b, c, .). 4 使用大写字母 (A, B, C, .).
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (2024)医院环境卫生监测试题及答案
- 2024年煤矿安全生产法律法规知识考试全套复习题库及答案
- 农业信息化技术支持与服务手册
- 推免毕业论文良以上
- 智慧城市.毕业论文
- 仓库上半年总结与下半年计划
- 图情专业毕业论文选
- 毕业论文体育系
- 毕业论文的崩溃
- 房产政策专业知识培训课件
- 新生儿病房护理安全管理
- 瑞雪迎春春节家宴主题说明书
- 医务人员职业道德准则(2025年版)全文培训课件
- 乘客遗失物品处理课件
- 美编设计面试题目及答案
- 2025年云南省中考物理真题(含答案)
- 肿瘤患者有效沟通技巧
- T/CIE 161-2023工业软件成熟度分级与评估指南
- 大型养路机械司机(打磨车)高级工技能鉴定考试题库(含答案)
- 【课件】酷家乐工具操作基础课程-云设计5.0
- 《建筑基坑支护技术规程》JGJ120-2012
评论
0/150
提交评论