RichEdit控件在处理EM_REPLACESEL消息中有bug?附一种解决办法
2007-11-29 16:32
267 查看
导读:
RichEdit控件在处理EM_REPLACESEL消息中有bug?附一种解决办法
Purple Endurer原创
2007-10-27 第1版
在 CmdShell 和 bat_do 中,命令的执行结果会通过EM_REPLACESEL消息添加到RichEdit控件编辑框中,但 ping 等一些命令的执行结果添加到RichEdit控件编辑框中会显示在同一行。
经对比分析ping 等一些命令的执行结果和添加到RichEdit控件编辑框中的结果,发现出现问题的原因在于:ping 等一些命令的执行结果中有一些换行符为 0dh, 0dh, 0ah,这些换行符在添加到 RichEdit控件编辑框的过程中,会被替换为 020h(即空格),于是所有的结果就显示在同一行了。
我的一种解决办法是对ping 等一些命令的执行结果进行处理,把0dh, ……, 0dh,换为 0dh。相应代码为:
;--- Check &skip 0dh series
;buffer--保存命令处理结果的内存首地址
;bytesRead--命令处理结果长度(字节)
lea esi, buffer
mov edi, esi
add bytesRead, esi
xor eax, eax;AL--当前字符, AH--前一字符
@TranBegin:
cmp esi, bytesRead
jg @TranEnd
mov al, byte ptr [esi]
cmp al, 0dh
jne @TranCopy
cmp ah, 0dh
jne @SkipTran
@TranCopy:
mov byte ptr [edi], al
inc edi
@SkipTran:
mov ah, al
inc esi
jmp @TranBegin
@TranEnd:
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1848408
本文转自
http://blog.csdn.net/Purpleendurer/archive/2007/10/27/1848408.aspx
RichEdit控件在处理EM_REPLACESEL消息中有bug?附一种解决办法
Purple Endurer原创
2007-10-27 第1版
在 CmdShell 和 bat_do 中,命令的执行结果会通过EM_REPLACESEL消息添加到RichEdit控件编辑框中,但 ping 等一些命令的执行结果添加到RichEdit控件编辑框中会显示在同一行。
经对比分析ping 等一些命令的执行结果和添加到RichEdit控件编辑框中的结果,发现出现问题的原因在于:ping 等一些命令的执行结果中有一些换行符为 0dh, 0dh, 0ah,这些换行符在添加到 RichEdit控件编辑框的过程中,会被替换为 020h(即空格),于是所有的结果就显示在同一行了。
我的一种解决办法是对ping 等一些命令的执行结果进行处理,把0dh, ……, 0dh,换为 0dh。相应代码为:
;--- Check &skip 0dh series
;buffer--保存命令处理结果的内存首地址
;bytesRead--命令处理结果长度(字节)
lea esi, buffer
mov edi, esi
add bytesRead, esi
xor eax, eax;AL--当前字符, AH--前一字符
@TranBegin:
cmp esi, bytesRead
jg @TranEnd
mov al, byte ptr [esi]
cmp al, 0dh
jne @TranCopy
cmp ah, 0dh
jne @SkipTran
@TranCopy:
mov byte ptr [edi], al
inc edi
@SkipTran:
mov ah, al
inc esi
jmp @TranBegin
@TranEnd:
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1848408
本文转自
http://blog.csdn.net/Purpleendurer/archive/2007/10/27/1848408.aspx
相关文章推荐
- RichEdit控件在处理EM_REPLACESEL消息中有bug?附一种解决办法
- 曲线解决CMFCPropertyGridCtrl掩码的bug2009年12月30日 星期三 下午 01:24CMFCPropertyGridCtrl这个控件当用到掩码时,会有问题.解决办法用其他掩码替代.下面是一个IP掩码处理方法.代码如下
- 【VC MFC开发】Dll 中对话框的控件无法接受到按键消息的解决办法
- Win程序处理繁忙而控件没刷新假死解决办法
- (转)为了解决oracle10.2.0.4上EM无法启动的BUG问题,打path 8350262补丁办法
- CFormView中控件无法响应Ctrl+C和Ctrl+V消息的解决办法
- win32关于对话框处理不到WM_KEYDOWN消息的解决办法(注:非MFC)
- IE中ocx控件的无模式对话框不接收方向键等键盘消息的问题的解决办法
- CSS 控件适配器工具包对事件处理的 Bug 以及修正办法
- CSS 控件适配器工具包对事件处理的 Bug 以及修正办法
- VS2008无法为添消控件添加消息响应函数的解决办法
- CSS 控件适配器工具包对事件处理的 Bug 以及修正办法
- RichEdit控件设置默认字体时只对中文起作用,对英文不起作用的解决办法
- ComponentArt Web.UI控件的bug及解决办法
- [原创]复合控件中如何将客户端的处理结果通知服务器端的解决办法
- EVC长按鼠标左键的消息处理解决办法
- 关于TableLayoutPanel里放入控件无法将Dock设为Fill的解决办法
- CListCtrl控件主要事件及LVN_ITEMCHANGED消息和鼠标双击列表项事件的处理
- 运行此安装程序之前,必须安装 32 位 Windows 映像处理组件(WIC)解决办法
- JAVA处理json复杂对象解决办法