B blackbeam Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-31 #1 TForm类有WndProc和消息处理函数,也可以SendMessage发送消息,如果是从非窗口类 继承的自定义类,如何实现同样的功能?
H huizhang Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-31 #2 直接继承自TObject的类是不能接受消息的, 但是SendMessage PostMessage发送消息是不 受限制的, 因为这两个方法是全局的API调用. 所以想要处理消息最好是用TWinControl继 承过来的. 至少要从TControl继承过来, 因为TControl是可视类的, TControl的Parent会 把消息转给TControl. 如果你坚持要用TObject类处理消息, 你可以用做一个TWinControl容器, 把你的不可视的 Object都放到这个容器里面, 容器接到消息后在分发给你自己的对象去作相应的处理. 不 过这样做很麻烦的, 你要给你的这些类加上消息处理机制, 搞下来也就跟TControl差不多 少了..
直接继承自TObject的类是不能接受消息的, 但是SendMessage PostMessage发送消息是不 受限制的, 因为这两个方法是全局的API调用. 所以想要处理消息最好是用TWinControl继 承过来的. 至少要从TControl继承过来, 因为TControl是可视类的, TControl的Parent会 把消息转给TControl. 如果你坚持要用TObject类处理消息, 你可以用做一个TWinControl容器, 把你的不可视的 Object都放到这个容器里面, 容器接到消息后在分发给你自己的对象去作相应的处理. 不 过这样做很麻烦的, 你要给你的这些类加上消息处理机制, 搞下来也就跟TControl差不多 少了..
吴 吴剑明 Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-31 #4 可以接受消息的: DELPHI有allocateHWND这个隐藏函数.
吴 吴剑明 Unregistered / Unconfirmed GUEST, unregistred user! 2002-02-01 #8 这个是没有资料的。:) 你在DELPHI的目录下搜索一下,可以找到这个函数的。我忘了在哪个单元里了。 该方法有个消息方法的参数,你声明他就是。返回一个句柄,你对这个句柄发消息, 这个对象就能收到你的消息了。
这个是没有资料的。:) 你在DELPHI的目录下搜索一下,可以找到这个函数的。我忘了在哪个单元里了。 该方法有个消息方法的参数,你声明他就是。返回一个句柄,你对这个句柄发消息, 这个对象就能收到你的消息了。
J Jhdandcl Unregistered / Unconfirmed GUEST, unregistred user! 2002-02-01 #9 可以,你需要override Tobject 的DefaultHandler 虚方法. procedure DefaultHandler(var Message) virtual;
H huizhang Unregistered / Unconfirmed GUEST, unregistred user! 2002-02-03 #11 这个问题虽然已经结束了,但是我还要说明一点。 TObject,TPersistent,TComponent这三个基础类是不能处理消息的。虽然TObject就有 DefaultHandler这个方法,可是里面的内容是空的,同样TPersistent,TComponent也没 都没有消息处理的任何代码。一直到了TControl才引进了WndProc这个方法来处理的消息。 所以TControl之前的任何类的DefaultHandler方法,只是一个空架子不处理何消息。
这个问题虽然已经结束了,但是我还要说明一点。 TObject,TPersistent,TComponent这三个基础类是不能处理消息的。虽然TObject就有 DefaultHandler这个方法,可是里面的内容是空的,同样TPersistent,TComponent也没 都没有消息处理的任何代码。一直到了TControl才引进了WndProc这个方法来处理的消息。 所以TControl之前的任何类的DefaultHandler方法,只是一个空架子不处理何消息。
吴 吴剑明 Unregistered / Unconfirmed GUEST, unregistred user! 2002-02-03 #12 huizhang: 你的观点是错的. 原因我在上面已经说明.从TOBJECT下来的类都可以接受消息. 想都不用想的: 如果TOBJECT不能实现接受消息,那么他下面的类是怎么接受消息的呢? 肯定有方法实现的,所以他下面的类就实现了接受消息的功能了.
huizhang: 你的观点是错的. 原因我在上面已经说明.从TOBJECT下来的类都可以接受消息. 想都不用想的: 如果TOBJECT不能实现接受消息,那么他下面的类是怎么接受消息的呢? 肯定有方法实现的,所以他下面的类就实现了接受消息的功能了.