如何拦截memo控件中的消息,实现不同的行出现不同的背景色?(100分)

  • 主题发起人 主题发起人 cnwinds
  • 开始时间 开始时间
C

cnwinds

Unregistered / Unconfirmed
GUEST, unregistred user!
能不能拦截到某个消息,实现比如重画某行的时候触发一个事件,参数指出当前重画的
是第几行,重画的区域! 请各位大师为小弟指点谜津!
 
用RichEdit不好么?利用它的SelAttributes属性控制可以简单地实现你的要求。
 
我的要求是像delphi的程序编辑器一样,设置断点的行会变成红色!
 
如果可以我也需要,我在做 ASM BUILDER 呢
 
to cnwinds:
换个思路嘛,不要只想着“重画某行的时候”,而可以是“当点击某行的时候”。
很明显,既然重画的消息得不到(确切地说至少你我目前都解决不了),但同时整个系统
掌握在自己手里(因为是你自己写的程序),完全可以利用变通的办法——
找一找和你想要的状态等价的状态。

比如像你说的要设置断点,那么用户做出设断点的动作的时机你完全可以获得,并且断点
的行号你也肯定可以得到,把它作为对编辑控件可见的全局变量(属性)记下来,然后在
需要的任何时候通过设置RichEdit.SelAttributes来重画断点行,当然还需要SelStart、
SelLength等方法的支持,同时很可能也需要EM_LINESCROLL等EM_系列消息的使用。

即先确定时机、再定位、再重画。具体的实现方法你可以查查RichEdit和EM_XXX消息的帮助。
 
用RichEdit最好,delphi的编辑器也不是memo的。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部