关于控件的问题,怎样才可以截获所属窗体的消息呢?!!!答者有分 (不论对错) (30分)

  • 主题发起人 主题发起人 不懂编程
  • 开始时间 开始时间

不懂编程

Unregistered / Unconfirmed
GUEST, unregistred user!
[:)]我自己写了一个小控件(测试用的),我想通过控件给父窗体加栽一幅图片,现在图片加栽上了(用的是form.canvas.draw(,,)画上的)
可是当父窗体失去焦点并在此得到焦点时窗体并没有重绘那幅位图,我想通过控件来接获父窗体的wm_pain消息来重新画一次,不知道这
样可以么?如果可以怎样做才可以借活父窗体的消息呢?还有就是怎样给我的控件定义方法(就像form的onmousemove一样可以在属性栏
里看到的)?谢谢了:)[:)]
 
怎么没有人来回答呀?
 
怎么没人回答呀,给点思路好不好呀?
 
我还没想到,想到了会回来。
 
1、可以通过HOOK来截获消息,在窗口过程相应该消息前处理你的代码
2、用Application.HookMainWindow()方法,具体使用方法看帮助
3、用子类话窗口
用到的函数有
SetWindowLong()
MakeObjectInstance()
具体使用方法看帮助
 
可以试试下面的方法:
在你的控件中写这第一个过程
OnApplicationMessage(var Msg: TMsg; var Handled: Boolean);

procedure Tyoucomponent.OnApplicationMessage;
begin
if msg.(我忘了要取哪个了)=wm_pain then
重画过程;
end;

并在控件的Create事件中多写上这句:
Application.OnMessage := OnApplicationMessage;

使用TApplication要引用forms单元。
 
我已经搞定了,就用的楼上的兄弟的方法,谢谢大伙:)
 
后退
顶部