MFC高级控件RichEdit的使用

  • MFC高级控件RichEdit的使用
  • MFC控件设置焦点,实现回车后编辑框内容清空,焦点停留在该编辑框内

MFC高级控件RichEdit的使用

RichEdit控件,可以设置编辑框内不同的行、不同的段落有不同的字体、颜色。
效果如下:

1、添加一个对话框,设置如下(下图上面的框是RichEdit2.0控件,下面的框是编辑框):

2、给上图这两个控件设置关联的成员变量(控件类型):

3、在类向导中添加对话框虚函数OnInitDialog

BOOL CMFCApplication1Dlg::OnInitDialog()
{CDialogEx::OnInitDialog();// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动//  执行此操作SetIcon(m_hIcon, TRUE);           // 设置大图标SetIcon(m_hIcon, FALSE);        // 设置小图标// TODO: 在此添加额外的初始化代码DWORD dwOldStyle = m_redit.GetExStyle();  //默认包含透明属性m_redit.ModifyStyleEx(dwOldStyle, WS_EX_CLIENTEDGE);  //去除透明属性//m_redit.SetBackgroundColor(TRUE, GetSysColor(COLOR_3DFACE));m_redit.SetBackgroundColor(FALSE, RGB(30, 30, 30));CHARFORMAT2 cf2;//memset(&cf2, 0, sizeof(CHARFORMAT2));cf2.cbSize = sizeof(CHARFORMAT2);cf2.dwMask = CFM_FACE | CFM_SIZE | CFM_COLOR;_tcscpy_s(cf2.szFaceName, _countof(cf2.szFaceName), _T("隶书"));cf2.yHeight = 320;cf2.crTextColor = 255;  设置默认字体颜色//cf2.crTextColor = RGB(0, 255, 0);    //也可以用RGB宏cf2.dwEffects = CFE_AUTOCOLOR & 0xBFFFFFFF;  //缺省为CFE_AUTOCOLOR 0x40000000m_redit.SetDefaultCharFormat(cf2);m_redit.SetWindowTextW(_T("---欢迎使用本软件---\r\n"));m_redit.SetSel(-1, -1);m_redit.ReplaceSel(_T("祝你聊天愉快\r\n"));return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

4、编写发送按钮处理函数

void CMFCApplication1Dlg::OnBnClickedOk()
{//CRichEditCtrl使用大全http://www.cppblog.com/kyelin/archive/2010/11/03/132300.aspxUpdateData(TRUE);CString str;COleDateTime time = COleDateTime::GetCurrentTime();str.Format(_T("梦飞龙卷风<mfljf@qq.com>   %d:%d:%d\r\n"), time.GetHour(), time.GetMinute(), time.GetSecond());CHARFORMAT2 cf2;cf2.cbSize = sizeof(CHARFORMAT2);cf2.dwMask = CFM_FACE | CFM_SIZE | CFM_COLOR;cf2.crTextColor = RGB(210, 115, 25);cf2.yHeight = 160;cf2.dwEffects = 0;_tcscpy_s(cf2.szFaceName, _countof(cf2.szFaceName), _T("宋体"));m_redit.SetSel(-1, -1);//m_redit.SetSel(m_redit.GetTextLength(), -1);//m_redit.SetDefaultCharFormat(cf2);m_redit.SetSelectionCharFormat(cf2);m_redit.ReplaceSel(str);GetDlgItemText(IDC_EDT_INPUT, str);cf2.dwMask |= CFM_UNDERLINE | CFM_BOLD | CFM_ITALIC;cf2.dwEffects |= CFE_UNDERLINE | CFE_BOLD | CFE_ITALIC;cf2.dwEffects &= 0xBFFFFFFF;_tcscpy_s(cf2.szFaceName, _countof(cf2.szFaceName), _T("楷体"));cf2.yHeight = 250;cf2.crTextColor = RGB(190, 160, 250);m_redit.SetSel(-1, -1);//m_redit.SetSel(m_redit.GetTextLength(), -1);m_redit.SetSelectionCharFormat(cf2);m_redit.ReplaceSel(str + _T("\r\n"));//cf2.dwEffects &= ~CFE_UNDERLINE;m_edit.SetSel(0, -1);m_edit.Clear();UpdateData(FALSE);m_edit.SetFocus();/*CWnd* pWnd = GetDlgItem(IDC_EDT_INPUT);HWND hWnd = pWnd->GetSafeHwnd();::SetFocus(hWnd);*/
}

MFC控件设置焦点,实现回车后编辑框内容清空,焦点停留在该编辑框内

  1. 设置对话框控件的tab order。 按Ctrl+D即可看见。将需要被设置到焦点的控件的tab order设为1。

  2. 代码设置(实现回车后编辑框内容清空,焦点停留在该编辑框内):

 m_edit.SetSel(0, -1);m_edit.Clear();UpdateData(FALSE);m_edit.SetFocus();
  1. 其他代码设置方式
 //方式一myedit1.SetFocus();    //设置焦点//myedit1是控件变量名//方式而CWnd* pWnd = GetDlgItem(IDC_EDIT1);//设置焦点pWnd->SetFocus();//方式三CWnd* pWnd2 = GetDlgItem(IDC_EDIT2);HWND hWnd = pWnd2->GetSafeHwnd();::SetFocus(hWnd);  //设置焦点//全局函数//返回值:若函数调用成功,则返回原先拥有键盘焦点的窗口句柄。若hWnd参数无效或窗口未与调用线程的消息队列相关,则返回值为NULL
  1. 其他参考
    对话框的OnInitDialog返回FALSE。解释如下:(摘抄至msdn)

If OnInitDialog returns nonzero, Windows sets the input focus to the first control in the dialog box.
The application can return 0 only if it has explicitly set the input focus to one of the controls in the dialog box.

  1. 转载
    用回车键替代TAB键传递焦点比较符合我们的输入习惯,在MFC中实现的大致不走如下:

1、建立一个基于对话框的MFC应用程序;

2、在对话框中添加若干编辑框和控件,按住ctrl+D键设置焦点顺序(例如你想编辑框IDC_EDIT1设置为第一个焦点,只需要第一个点这个编辑框即可,接下来的依次点就可以了);

3、将所有编辑框的属性中mutilline和want return设为true;

4、在dlg类中重载PreTranslateMessage函数,如下所示:

BOOL **Dlg::PreTranslateMessage(MSG pMsg)//传递焦点
{
// TODO: 在此添加专用代码和/或调用基类

if((pMsg->message == WM_KEYDOWN) && (VK_RETURN == (int) pMsg->wParam))
{if(GetFocus()->GetDlgCtrlID() != IDOK){pMsg->wParam = VK_TAB;}
}return CDialogEx::PreTranslateMessage(pMsg);

}

注意:1、IDOK为对话框中的缺省按钮ID,若对话框的缺省按钮已更改,则写相对应的缺省按钮的ID号;
2、此方法可以实现在编辑框之间的依次切换,当遇到第一个按钮控件时(一般设置为缺省按钮),按下回车键相当于执行鼠标点击该按钮的功能。
————————————————
版权声明:本文为CSDN博主「hswangjiajia」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hswangjiajia/article/details/12979379

MFC高级控件RichEdit2.0的使用相关推荐

  1. RecyclerView高级控件-附实例【android专题】

    RecyclerView高级控件 RecyclerView是Android 及其重要的一个高级UI控件,使用频率及其的高,APP的90%以上的页面都会使用的到.由于其出色的性能和插拔式的架构设计,被全 ...

  2. Android高级控件(二)——SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现...

    Android高级控件(二)--SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现 写这个的原因呢,也是因为项目中用到了gif动画,虽然网上有很多的架包可以实现,不过我们还 ...

  3. 《移动项目实践》实验报告——Android高级控件

    实验目的 1.熟悉App开发常用的一些高级控件及相关工具,主要包括日期时间控件的用法.列表类视图及其适配器的用法.翻页类视图及其适配器的用法.碎片及其适配器的用法等: 2.熟悉四大组件之一广播Broa ...

  4. Android从入门到进阶之高级控件

    高级控件 1.自动完成文本控件 在搜索引擎(百度.搜狗)输入几个文字,会出来一些提示.可以减少用户的输入,提高程序的效率.刚才看到的自动提示,ajax技术. 1.1AotoCompleteTextVi ...

  5. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第八章:高级控件

    本章介绍了App开发常用的一些高级控件用法,主要包括:如何使用下拉框及其适配器.如何使用列表 类视图及其适配器.如何使用翻页类视图及其适配器.如何使用碎片及其适配器等.然后结合本章所学 的知识,演示了 ...

  6. 三、PyQt5高级控件的使用

    (四)PyQt5高级控件的使用 PyQt5中包含了很多用于简化窗口设计的可视化控件,除了常用控件外,还有一些关于进度.展示数据等的高级控件. 本章重点讲解PyQt5程序开发中用到的一些高级控件,主要包 ...

  7. Android高级控件(一)——ListView绑定CheckBox实现全选,增加和删除等功能

    Android高级控件(一)--ListView绑定CheckBox实现全选,增加和删除等功能 这个控件还是挺复杂的,也是项目中应该算是比较常用的了,所以写了一个小Demo来讲讲,主要是自定义adap ...

  8. Android高级控件(四)——VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷

    Android高级控件(四)--VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷 是不是感觉QQ空间什么的每次新版本更新那炫炫的引导页就特别的激动,哈哈,其实他实现起来真的很简单很 ...

  9. Android 高级控件(七)——RecyclerView的方方面面

    Android 高级控件(七)--RecyclerView的方方面面 RecyclerView出来很长时间了,相信大家都已经比较了解了,这里我把知识梳理一下,其实你把他看成一个升级版的ListView ...

最新文章

  1. 在公司中,如何提升自己的段位,脱颖而出
  2. php 教程 字符联接,PHP字符串的连接_PHP教程
  3. 淘宝搜索中基于embedding的召回
  4. mysql数据类型优化
  5. 并联系统的失效率公式推导_供暖系统水力平衡率对室温的影响
  6. Ubuntu16.04 Caffe 编译安装步骤记录
  7. python使用英汉大字典离线获取单词释义
  8. 东北真有“油炸冰溜子”这道菜吗?
  9. nginx,作为前端的你会多少?
  10. 华为y220t android版本升级,华为 Y220T(移动版)救砖教程 救砖包 刷回官方系统支持OTA升级...
  11. 嵌入式驱动开发遇到version magic不匹配解决办法
  12. java 中英日期转换器_Java SimpleDateFormat中英文时间格式化转换详解
  13. 计算机物联网应用技术工资,物联网专业毕业生现状 刚毕业薪资多少
  14. 第九周 任务一
  15. L3-001 凑零钱 (30 分)
  16. c语言中if( k1)的含义,C语言:我的按键程序K1键按下没有反应,其他两个都有反应...
  17. 直播回顾 | 第四期直播课堂:5G消息在工业领域的应用分享
  18. 后端服务常见问题解决方案
  19. 麒麟kylin3安装字体
  20. 创建 CAD 文档模板

热门文章

  1. 【牛客CMB2 小招喵跑步】
  2. Zernike多项式的Matlab代码
  3. 国企招聘:湖北铁路集团2023校园招聘
  4. GM Right Mouse Pro for Mac,鼠标右键增强工具
  5. web性能测试术语小集合 [ 光影人像 东海陈光剑 的博客 ]
  6. [Android开发那点破事]解决android.os.NetworkOnMainThreadException
  7. 根据输入的正整数y所代表的年份,计算输出该年份是否为闰年 闰年的判断标准:
  8. 数字冰雹-智慧电力可视化分析决策系统
  9. 根据出生日期计算年龄或者根据身份证号计算年龄
  10. symbol的基本使用方式