您的位置:首页 > Web前端

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  byte buffer
相关文章推荐