用消息改变颜色? ( 积分: 100 )

  • 主题发起人 主题发起人 超级番茄
  • 开始时间 开始时间

超级番茄

Unregistered / Unconfirmed
GUEST, unregistred user!
遇到一个应该很简单的问题,但一时没解决<br>我要把一个其他程序中的Memo或RichEdit的字的颜色改掉,<br>比如说Memo,获得了它的handle后,用SetTextColor(GetDC(handle),RGB(0,0,0));<br>不行,不知道怎么回事。<br>另外可以用Sendmessage发个什么消息来解决这个问题么?
 
遇到一个应该很简单的问题,但一时没解决<br>我要把一个其他程序中的Memo或RichEdit的字的颜色改掉,<br>比如说Memo,获得了它的handle后,用SetTextColor(GetDC(handle),RGB(0,0,0));<br>不行,不知道怎么回事。<br>另外可以用Sendmessage发个什么消息来解决这个问题么?
 
WM_SETFONT 我不知道该怎么用。如果是CreateFont来提供hFont的话,CreateFont并没有颜色这个参数呀。
 
试试对象复制呢?自己先定义一个字体对象,然后付给你要改的字体。
 
什么叫对象复制,将具体点好么?
 
postmessage 给Memo所在的主窗体,让主窗体来改变Memo的颜色。Sendmessage需要返回,不如PostMessage用的方便。
 
理论上 WM_SETFONT是可以,<br>但Delphi真正只识 TControl.FFont,<br>所以不能直接用 WM_SETFONT实现,不信看源码吧
 
不至于吧,就这么一个改颜色就这么困难么?改文字用WM_SETTEXT不是很方便的吗?<br>请高手指教。
 
uses richedit;<br><br>var<br>cf2 : TCharFormat2;<br>begin<br> &nbsp;cf2.cbSize=sizeof(TCharFormat2);<br> &nbsp;SendMessage(hRichedit,EM_GETCHARFORMAT,SCF_DEFAULT,longint(@cf2));<br> &nbsp;cf2.dwMask:=CFM_COLOR;<br> &nbsp;cf2.crTextColor:=rgb(0,0,0);<br> &nbsp;SendMessage(hRichedit,EM_SETCHARFORMAT,SCF_ALL,longint(@cf2));<br>end;
 
后退
顶部