关于自定义类的消息处理问题

luxiao 2007-06-20 10:30:38
本人刚接触delphi,想写一个自定义类,需要有自己的消息循环,但是不要有界面,请问这个自定义类该怎么写?是应该从某个基类继承就可以实现,还是需要自己写消息循环处理消息呢?
...全文
165 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
luxiao 2007-06-20
  • 打赏
  • 举报
回复
还是不太理解,
if msg.hwnd <> 0 then
begin
TranslateMessage(msg);
DispatchMessage(msg);
end;
这段代码应该放在哪个函数中,Execute还是WindowProc?

那dispatchmessage之后,哪个函数会被调用去处理呢?WindowProc?
一头雾水,呵呵
「已注销」 2007-06-20
  • 打赏
  • 举报
回复
从TThread可以直接收消息啊
其他线程给它发送PostThreadMessage

线程内部处理:
先检查消息 PeekMessage

然后
if msg.hwnd <> 0 then
begin
TranslateMessage(msg);
DispatchMessage(msg);
end;

最后
case msg.message of
....{处理代码}
luxiao 2007-06-20
  • 打赏
  • 举报
回复
首先这个是个线程,是不是应该要从TThread继承,如果从这里继承了,是否就是说只能用FHWnd := AllocateHWnd(CommWndProc);这种方法来处理消息循环?用这个句柄如何处理消息循环?小弟刚接触delphi,实在是觉得力气不知道该往哪里使。多谢!
「已注销」 2007-06-20
  • 打赏
  • 举报
回复
如果你直接继承TObject,可以这样:
FHWnd := AllocateHWnd(CommWndProc);
用FHWnd接收消息

或者你从TWinControl继承
luxiao 2007-06-20
  • 打赏
  • 举报
回复
这个自定义类其实是个单独的线程,需要有自己的消息循环,线程需要跟别的线程以及界面通信。
「已注销」 2007-06-20
  • 打赏
  • 举报
回复
你找个spcomm.pas,里面比较详细

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧