VC中自定义CRichEditCtrl控件

2016-02-19 21:42 44 1 收藏

关注图老师设计创意栏目可以让大家能更好的了解电脑,知道有关于电脑的更多有趣教程,今天给大家分享VC中自定义CRichEditCtrl控件教程,希望对大家能有一点小小的帮助。

【 tulaoshi.com - 编程语言 】

  在VC中提供了两种很方便的编辑控件(CEdit 和CRichEditCtrl),一般来说这两种控件已经满足了我们大部分的需要,不过只有CEdit控件能响应我们鼠标右键消息,通过右键我们很容易的操作我们的编辑,而在CRichEditCtrl控件中我们不能得到这样的操作,同时CRichEditCtrl是能够包含各种格式的内容,就好像Word一样能够写入各种不同的字体,不过CRichEditCtrl没有给我们提供这样的要求,今天我的目的也就是给他添加这样的扩展操作。

 
 

  本代码运行效果图

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  一. 首先我们要从CRichEditCtrl类派生一个我们自己的类CMyRichEdit,我们的操作也是在其中完成的。

  二. 然后我们添加鼠标右键消息,在其中添加代码如下:

//设置为焦点
SetFocus();
//创建一个弹出式菜单
CMenu popmenu;
popmenu.CreatePopupMenu();
//添加菜单项目
popmenu.AppendMenu(0, ID_RICH_UNDO, "&Undo");
popmenu.AppendMenu(0, MF_SEPARATOR);
popmenu.AppendMenu(0, ID_RICH_CUT, "&Cut");
popmenu.AppendMenu(0, ID_RICH_COPY, "C&opy");
popmenu.AppendMenu(0, ID_RICH_PASTE, "&Paste");
popmenu.AppendMenu(0, ID_RICH_CLEAR, "C&lear");
popmenu.AppendMenu(0, MF_SEPARATOR);
popmenu.AppendMenu(0, ID_RICH_SELECTALL, "Select &All");
popmenu.AppendMenu(0, MF_SEPARATOR);
popmenu.AppendMenu(0, ID_RICH_SETFONT, "Select &Font");
//初始化菜单项
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();

  三. 然后在.h文件中加入如下的ID定义:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

来源:https://www.tulaoshi.com/n/20160219/1626925.html

延伸阅读
标签: Web开发
今天在网上看到ASP.Net 2.0中注册自定义控件的好方法,记录如下。 在web.config 文件中全局注册自定义控件 system.web       pages         controls           add tagPrefix="rx" assembly="HYLQ.Component" ...
用VC++创建自定义向导程序 作者:毛翔 网站:esword.onchina.net 下载本文源代码 向导是一种用来简化用户操作的程序。在Microsoft 的所有产品中都存在向导,如Office2000 中的Web 页向导就是一个十分典型的向 导(如下图所示),还有常用的VC++向导。 一个基本的向导程序应该包...
1. 首先定义一个消息代码 #define WM_DEBUG     WM_USER + 1999 2. 在窗口头文件中添加 class CStreamServerDlg : public CDialog {  // Generated message map functions  //{{AFX_MSG(CStreamServerDlg) ...  /
using System; using System.Web.UI; using System.Web.UI.WebControls; using System.ComponentModel; using System.Collections.Specialized; namespace MyWebControls { /// /// 创建一个派生于WEBCONTROL的类 /// 实现一个公有构造函数,它将调用基类构造函数来指定服务器控件应该输出一个input元素 /// 重写AddAttributesToRender...
标签: Web开发
可以用流下载(耗内存,少用)或直接转到该文件. % Const USE_STREAM = 0 '0.不用流(Adodb.Stream)下载 1.用流下载 Const ALLOW_FILE_EXT = "rar,zip,chm,doc,xls,swf,mp3,gif,jpg,jpeg,png,bmp" '允许下载的文件的扩展名,防止源代码被下载 Dim sDownFilePath '下载文件路径 sDownFilePath = Trim(...

经验教程

647

收藏

62
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部