• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 如何在richedit中设置不同颜色?

如何在richedit中设置不同颜色?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了richedit,richedit控件,richeditcontrol,mfc richedit,delphi richedit等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 如何在richedit中设置不同颜色?
描述:

红红黑黑黑黑黑黑黑黑黑黑黑黑
红红黑黑黑黑黑黑黑黑黑黑黑黑
红红黑黑黑黑黑黑黑黑黑黑黑黑
红红黑黑黑黑黑黑黑黑黑黑黑黑
红红黑黑黑黑黑黑黑黑黑黑黑黑
红红黑黑黑黑黑黑黑黑黑黑黑黑
红红黑黑黑黑黑黑黑黑黑黑黑黑
红红黑黑黑黑黑黑黑黑黑黑黑黑
    long lenth=redit->GetTextLength();
    FINDTEXTEX ft;    
    ft.chrg.cpMin=1;       
    ft.chrg.cpMax=-1;   
    ft.lpstrText="\r";    
    for (ft.chrg.cpMin=1;ft.chrg.cpMin<=lenth;ft.chrg.cpMin++)
    {
    long n=redit->FindText(0,&ft);   
    if   (n!=-1)  
    {    
        redit->SetSel(ft.chrgText.cpMin,ft.chrgText.cpMin+11);          
        redit->SetSelectionCharFormat(cf);    
    }   
  
    }
我用这样的方法,可以实现
因为是先sel,再format,再sel,再format,这样每次屏幕都会闪烁很长时间.不知道怎么解决


解决方案1:

我这里有个richedit的类,是通过选中文字然后右键菜单的字体选项来改变字体大小和颜色  你可以参考一下,把它改字体的那段提炼出来就可以了
///////////////////////////////////////////////////////
///////////////////////////////////////////////////////
///////////////////////////////////////////////////////
// MyRichEdit.cpp : implementation file
//
#include "stdafx.h"
#include "MyRichEdit.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define ID_RICH_UNDO                    101
#define ID_RICH_CUT                     102
#define ID_RICH_COPY                    103
#define ID_RICH_PASTE                   104
#define ID_RICH_CLEAR                   105
#define ID_RICH_SELECTALL               106
#define ID_RICH_SETFONT                 107
/////////////////////////////////////////////////////////////////////////////
// CMyRichEdit
CMyRichEdit::CMyRichEdit()
{
}
CMyRichEdit::~CMyRichEdit()
{
}
BEGIN_MESSAGE_MAP(CMyRichEdit, CRichEditCtrl)
//{{AFX_MSG_MAP(CMyRichEdit)
ON_WM_RBUTTONDOWN()
ON_COMMAND(ID_RICH_COPY, OnCopy)
ON_COMMAND(ID_RICH_CUT, OnCut)
ON_COMMAND(ID_RICH_PASTE, OnPaste)
ON_COMMAND(ID_RICH_SELECTALL, OnSelectall)
ON_COMMAND(ID_RICH_UNDO, OnUndo)
ON_COMMAND(ID_RICH_CLEAR, OnClear)
ON_COMMAND(ID_RICH_SETFONT, OnSelectfont)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMyRichEdit message handlers
void CMyRichEdit::OnRButtonDown(UINT nFlags, CPoint point) 
{
//设置为焦点
SetFocus();
//创建一个弹出式菜单
CMenu popmenu;
popmenu.CreatePopupMenu();
//添加菜单项目
popmenu.AppendMenu(0, ID_RICH_UNDO, "撤消(&U)\tCtrl+Z");
popmenu.AppendMenu(0, MF_SEPARATOR);
popmenu.AppendMenu(0, ID_RICH_CUT, "剪切(&X)\tCtrl+X");
popmenu.AppendMenu(0, ID_RICH_COPY, "复制(&C)\tCtrl+C");
popmenu.AppendMenu(0, ID_RICH_PASTE, "粘贴(&P)\tCtrl+V");
popmenu.AppendMenu(0, ID_RICH_CLEAR, "清除(&L)");
popmenu.AppendMenu(0, MF_SEPARATOR);
popmenu.AppendMenu(0, ID_RICH_SELECTALL, "全选(&A)\tCtrl+A");
popmenu.AppendMenu(0, MF_SEPARATOR);
popmenu.AppendMenu(0, ID_RICH_SETFONT, "字体(&F)");
//初始化菜单项
UINT nUndo=(CanUndo() ? 0 : MF_GRAYED );
popmenu.EnableMenuItem(ID_RICH_UNDO, MF_BYCOMMAND|nUndo);
UINT nSel=((GetSelectionType()!=SEL_EMPTY) ? 0 : MF_GRAYED) ;
popmenu.EnableMenuItem(ID_RICH_CUT, MF_BYCOMMAND|nSel);
popmenu.EnableMenuItem(ID_RICH_COPY, MF_BYCOMMAND|nSel);
popmenu.EnableMenuItem(ID_RICH_CLEAR, MF_BYCOMMAND|nSel);
UINT nPaste=(CanPaste() ? 0 : MF_GRAYED) ;
popmenu.EnableMenuItem(ID_RICH_PASTE, MF_BYCOMMAND|nPaste);
//显示菜单
CPoint pt;
GetCursorPos(&pt);
popmenu.TrackPopupMenu(TPM_RIGHTBUTTON, pt.x, pt.y, this);
popmenu.DestroyMenu();
CRichEditCtrl::OnRButtonDown(nFlags, point);
}
void CMyRichEdit::OnSelectfont() 
{
// TODO: Add your command handler code here
CHARFORMAT cf;
LOGFONT lf;
memset(&cf, 0, sizeof(CHARFORMAT));
memset(&lf, 0, sizeof(LOGFONT));
//判断是否选择了内容
BOOL m_bSelect = (GetSelectionType() != SEL_EMPTY) ? TRUE : FALSE;
if (m_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 (m_bSelect) 
SetSelectionCharFormat(cf); //为选定的内容设定所选字体
else
SetWordCharFormat(cf); //为将要输入的内容设定字体
}
}
///////////////////////////////////////////////////////
///////////////////////////////////////////////////////
///////////////////////////////////////////////////////
#if !defined(AFX_MY

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 怎么在RichEdit中插入进度条
  • 如何通过CRichEditCntrItem和ActiveX控件通讯,如调用控件的属性和方法?
  • 自己开发的带窗体的OCX控件,在窗体上添加richedit控件?
  • 请问在ATL写的DLL中如何使用RICHEDIT控件?谢谢了
  • 我在ACTIVEX中使用了一個對話框,在對話框上加入richeditctrl,如果在ie中使用,就不顯示,不知道爲什麽?
  • 那里有RichEdit控件下载?
  • 怎样在RichEdit控件中提取位图信息
  • MFCActiveX控件插入到RichEdit的问题
  • RichEdit中插入Gif动画的几个问题情高手赐教----网上等
  • vc关于richedit中gif播放控件的问题

相关文章

  • 2017-06-05 MFCVARIANT终止在vtRet!=VT_EMPTY
  • 2017-06-04 那位大哥有MicrosoftBarCodeControl90控件得使用得例子,我想参照一下看看,谢谢了,大家帮帮忙
  • 2017-06-04 请问高手:ActiveX控件里头怎么样设置定时器?
  • 2017-06-04 利用刻录SDK做过刻录程序的朋友请进。。。
  • 2017-06-04 高手快来帮忙啊,出了这个错误是怎么回事啊,多谢啦:)
  • 2017-06-05 com/active可以使用mfc对话框啊???//与atl对话框有什么区别???
  • 2017-06-05 dll里对话框上的工具条没有tooltip功能
  • 2017-06-04 关于DCOM的简单问题,有点晕,望兄弟姐妹们指点~~~
  • 2017-06-05 关于HOOK和Dll的几个疑问,请大家帮我看看
  • 2017-06-05 怎么样判断另一个程序是否正在运行?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++变量类型
    • delphi调用VC创建的dll问题(100)
    • vs2005里面共享数据段为何不能共享啊?
    • 如何将activex控件显示在word文字的上方
    • 寻找一个工具,能编译C++并能列出每一行C++源代码对应的汇编
    • DLL导出函数类型标识的问题
    • 自己写的第一个ATL误打误撞运行成功,但想想又觉得不对。。。。。
    • 希望ActiveX控件接口函数返回char[],接口如何定义?WEB如何得到这个返回值?
    • VC调用Matlab生成的COM组件显示图像问题
    • 急:求系统介绍浏览器中ActiveX控件制作、签署和打包的资料

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有