首先是在Properties中设置控件属性的问题,首先必须得将Mutilines属性设为true,才能支持多行显示。

手动换行(按Enter键换行):将Want Return属性设为true

自动换行(即文本超过edit控件宽度后换行):将Vertical Scroll设为true,将Horizontal Scroll设为false,将Auto HScroll设为false,将Auto HScroll设为true。

然后实现对Ctrl+A的响应,这里需要重载对话框类CXXXDlg的PreTranslateMessage函数

BOOL CXXXCommDlg::PreTranslateMessage(MSG* pMsg)
{
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT_RECV_MSG);
if (pMsg->message == WM_KEYDOWN &&
pMsg->hwnd == pEdit->GetSafeHwnd())
{
// 响应Ctrl+A
if ((GetKeyState(VK_CONTROL) & 0x8000) && pMsg->wParam == 'A')
{
CString buf;
GetDlgItemText(IDC_EDIT_RECV_MSG, buf);
pEdit->SetSel(, buf.GetLength());
}
}
return CDialogEx::PreTranslateMessage(pMsg);
}

GetKeyState() & 0x8000是将Ctrl/Shift/Alt键与其他键作比较,Shift对应VK_SHIFT,Alt对应VK_MENU。然后其他键会存在wParam中。

CEdit::SetSel函数第一个参数是起始字符编号,第二个参数是选中的字符数量。所以这里是将所有字符选中

MFC对话框的Edit控件实现响应Ctrl+A全选,并实现自动/手动换行+滚动条的更多相关文章

  1. MFC学习之EDIT控件初始化

    //四种方法为EDIT控件初始化     //调用系统API     HWND hEidt = ::GetDlgItem(m_hWnd,IDC_EDIT1);     ::SetWindowText( ...

  2. mfc 动态创建EDIT控件

    知识点: CWnd::Create CWnd::CreateEx Spy++工具 动态创建控件 一. CWnd::Create 参数 virtual BOOL Create( LPCTSTR lpsz ...

  3. VC++6.0/MFC 自定义edit 限制输入内容 响应复制粘贴全选剪切的功能

    Ctrl组合键ASCII码 ^Z代表Ctrl+z                     ASCII值 控制字符  ASCII值 控制字符  ASCII值 控制字符  ASCII值 控制字符0(00) ...

  4. 控件篇:CheckedListBox的全选与反选

    private void cbXmlAll_CheckedChanged(object sender, EventArgs e) { for (int i = 0; i < cblXmlList ...

  5. win32: 文本编辑框(Edit)控件响应事件

    过去几年,关于文本编辑框(Edit)控件的响应事件,我都是在主程序 while(GetMessage(&messages, NULL, 0, 0)) { ... } 捕获. 总感觉这种方式让人 ...

  6. Iocomp控件教程之Analog Display—模拟显示控件(优于EDIT控件)

    Analog Display是简洁的显示控件.用于显示指定准确度和单位的模拟值(实数),能够将准确度设置为0.使显示结果为整数. 第一步:建立MFC对话框 第二步:插入AnalogDisplay控件 ...

  7. 【转】MFC 自定义edit 限制输入十六进制内容 响应复制粘贴全选剪切的功能

    参考地址:MFC 自定义edit 限制输入内容 响应复制粘贴全选剪切的功能   Ctrl组合键ASCII码 ^Z代表Ctrl+z                     ASCII值 控制字符  AS ...

  8. MFC限制edit控件的字符输入长度

    一. 1.Edit 控件添加EN_CHANGE事件 #define MAX_SIZE 200 void CMyDlg::OnChangeEditFeed() { // TODO: 如果该控件是 RIC ...

  9. VC++6.0/MFC中如何限制Edit控件输入 例子,只能输入0和1

    1.Insert -> New Class -> 在Base Class中选择CEdit,在Name中输入CMyEdit. 2.在左边的ClassView中,右键击CMyEdit,选择Ad ...

随机推荐

  1. 2793 [Poi2012]Vouchers

    我们直接模拟就可以了= = now[x]表示x的倍数已经取到x * i了,于是每次读入x,直接向上枚举x个没取过的数即可. /************************************* ...

  2. yyyy-MM-dd EEE hh:mm:ss(日期转换)

    <script> /** * 对Date的扩展,将 Date 转化为指定格式的String * 月(M).日(d).12小时(h).24小时(H).分(m).秒(s).周(E).季度(q) ...

  3. navicat for mysql 导入SQL Server显示中文乱码解决办法

    解决方法是在navicat里右击一个连接,选择连接属性,切换到高级选项卡,去掉“使用mysql字符集”前的对勾,在编码里选择utf-8

  4. C# 实现QQ式截图功能

    这个功能一共有两部分组成,第一部分是窗体代码,另外的一部分是一个辅助方法.直接贴出代码,以供大家参考: using System; using System.Collections.Generic; ...

  5. HP数组转JSON函数json_encode和JSON转数组json_decode函数的使用方法

    这两个函数比较简单,我这里直接写例子,但是有一点一定要注意,json数据只支持utf-8格式,GBK格式的数据转换为json会报错! json_encode()用法: <?php$data =a ...

  6. Ubuntu下执行mysql的sql文件

    Ubuntu下执行mysql的.sql文件   方法一: 1.执行此命令,会提示输入mysql的root账户的密码,验证成功后,会在dbname这个数据库中执行filename.sql这个脚本,其中f ...

  7. linux 下 iscsi的简单使用

      一.准备工作 1.1.(服务端和客户端都需要设置) 系统使用的是CentOS6.8 禁用防火墙: 查看状态:# service iptables status 停止:# systemctl sto ...

  8. ios Label TextFile 文本来回滚动 包括好用的三方

    通常显示不够了,比如八个字.只能显示6个字 .产品要求 来回滚动 下面有两种 方法 : 一种UIScrollView  一种 View动画  如果不能满足你  请点击这个 https://github ...

  9. dhcp snooping、ARP防护、

    应用场景 无线客户端流动性很大和不确定,比如在外来人员比较多的地方:广场.大厅.会议室和接待室等等.使用该方案可以有效地避免因为无线端出现私设IP地址导致地址冲突或者客户端中ARP病毒发起ARP攻击的 ...

  10. python caffe 在师兄的代码上修改成自己风格的代码

    首先,感谢师兄的帮助.师兄的代码封装成类,流畅精美,容易调试.我的代码是堆积成的,被师兄嘲笑说写脚本.好吧!我的代码只有我懂,哈哈! 希望以后代码能写得工整点.现在还是让我先懂.这里,我做了一个简单的 ...