2 tongxiaomo tongxiaomo 于 2014.12.11 14:59 提问

使用CRichEditCtrl实现动态调整编辑框大小时在末尾输入空格无法正确计算大小

继承CRichEditCtrl类得到CAutoReSizeEdit类;
该类中
主要添加如下:
void CAutoReSizeEdit::OnEnRequestresize(NMHDR *pNMHDR, LRESULT *pResult)//重写的EN_REQUESTRESIZE消息
{
REQRESIZE *pReqResize = reinterpret_cast(pNMHDR);

//添加
MoveWindow(&pReqResize->rc);
//添加结束

*pResult = 0;

}

在Dlg的.h头文件中声明如下:
CAutoReSizeEdit m_ctrledit;

在Dlg的cpp文件的OnInitDialog中创建并设置如下:
m_ctrledit.Create(WS_CHILD|WS_VISIBLE|ES_MULTILINE|ES_WANTRETURN|ES_AUTOVSCROLL|ES_AUTOHSCROLL,rect,this,1003);
m_ctrledit.SetEventMask(ENM_REQUESTRESIZE);

遇到如下问题:
当我在编辑框中输入的时候:
1、直接输入空格;
2、在末尾输入空格;
OnEnRequestresize方法都没有响应,但输入其他字符或在前面和中间输入空格的时候却能正常计算出大小并调整大小!!!

另外有测试创建m_ctrledit的时候不要ES_MULTILINE属性,则没有上述问题,但这时候却无法实现多行输入!!!

请问哪位大神指导如何既不出现上述的问题,又能多行显示吗???
小弟在此现行谢过啦!!!!!!

1个回答

91program
91program   Ds   Rxr 2014.12.11 15:16

CRichEditCtrl 应该也有同样的问题吧,是不是?

如果是这样,只能说 CRichEditCtrl 在多行的实现时,在计算长度时使用了截取头尾空格的功能。
如果在空格后再输入一个字符呢,是否能得到正确的结果? 看看能不能重载长度计算的功能吧。

91program
91program 回复tongxiaomo: 获取字符串的内容呢,也一样没有空格?如果是这样,还真不好办。
3 年多之前 回复
tongxiaomo
tongxiaomo 这个类没有提供可以被重载的计算尺寸的函数哦,直接内部计算好后通知的。。。
3 年多之前 回复
tongxiaomo
tongxiaomo 头部和中间的空格都没有截取,即使在末尾输入若干个空格后再输入一个字符,也能正确得到尺寸
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
CRichEditCtrl中实现查找功能
在我的一个程序中,需要提供类似于记事本的查找功能。如图: 我写此文的目的是想向初学MFC的朋友们介绍 如何通过CRichEditCtrl来实现文本查找 如何在窗体间发送消息 实现文本查找功能,大致分为以下几步: 创建一个包含有CRichEditCtrl的窗体资源以及该窗体对应的处理类 创建一个录入查找文本的窗体资源以及该窗体对应的
输入框动态调整大小
本文提供APP开发当中常用的edittext效果 需求,在当前页面底部显示一个布局,布局内包含一个输入框,右侧有一个按钮。在键盘显示时布局上移,在输入文字比较多事输入框高度自动增加,并且显示行数不操过3行。下面是显示效果 因为在布局上面直接显示布局,所以不需要任何设置系统默认就是这个效果。我们只需要实现相应布局即可 布局文件如下,大家看看属性就明白了。这里注意一下如果不在webview上
MFC编辑框如何改变字体的大小
方法一: 步骤一:在Dlg类中增加一个类成员变量: CFont m_editFont; 注意:这里Font对象必须是类成员变量,不能是局部变量,否则会出现只改变了光标的大小,而不能改变字体的大小。 步骤二:在OnInitDialog方法中增加下列语句: m_editFont.CreatePointFont(180, "宋体"); m_editPlace.SetFont(&m_ed
VC对话框调整静态文本和编辑框等字体和大小
[解决方法]     简单的步骤:在Windows中,每个窗体都有自己的字体。要改变其字体首先要CFont::CreateFont创建一个字体,然后用CWnd::SetFont选择此字体,赋给控件。具体的步骤: 1.在include的下面定义一个全局变量:   CFont cfont; 2.把以下这一部分放到OnInitDialog()函数里面:   cfont.Create
如何改变编辑框字体的大小
方法一: 步骤一:在Dlg类中增加一个类成员变量:    CFont m_editFont; 注意:这里Font对象必须是类成员变量,不能是局部变量,否则会出现只改变了光标的大小,而不能改变字体的大小。 步骤二:在OnInitDialog方法中增加下列语句: m_editFont.CreatePointFont(180, "宋体"); m_editPlace.SetFont(&m
Android动态改变高度以及计算长度的EditText
前段时间项目需求,需要做一个有
MFC动态调整对话框控件位置和大小
EasySize - Dialog resizing inno time! http://www.codeproject.com/KB/dialog/easysize.aspx AutoSizeDlg - an autoresizingclass for ATL/WTL http://www.codeproject.com/KB/wtl/AutoSizeDlg.aspx 对easysize
修改实例大小失败
计算节点root用户能够通过授权方式登陆其他节点,但修改实例大小需要将本节点上运行的实例迁移到其他节点,迁移过程中需要创建目录,而创建这些目录的用户为nova, 但nova用户默认的shell权限为/bin/false,即不能登陆shell,更无法在未授权的情况下登陆其他节点创建文件,这需要在各节点上进行相关权限及设置修改,或者可以使用其他方式达到此目的,需要继续探讨。
关于easyUI datagrid、layout动态改变大小使用的方法
这几天在做iframe自适应浏览器,iframe自适应没一会做好了,但iframe嵌套子页面是用easyUI写的,里面的datagrid、layout怎么都没有办法自适应,初始时是多大就是多大,解决这个问题费了一番功夫,最后发现easyUI自身提供了“resize”方法可以动态设置大小,看来文档还得多看啊。         layout里面“北”、“南”、“东”、“西”、“中”五个区域layou
C# winform 运行时可以调整大小和位置的文本框
http://www.2cto.com/kf/201302/190197.html