DLL窗体之间发消息问题

fengemail8 2013-04-25 10:18:49
现有主窗体Main,
DLL包中有Form1,Form2

Main运行后半入DLL包,
现在我想Form2想发消息到Form1,但是收不到消息,发给主窗体Main可以收到
代码如下:
发Form1,这失败
H := FindWindow('Tform1',Nil);,,得到H=0
postMessage(H,MessageIDNo,1,1)

发Main,这正常
H := FindWindow('Tmain',Nil);
postMessage(H,MessageIDNo,1,1)

...全文
227 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
酣酣 2013-04-26
  • 打赏
  • 举报
回复
两个dll在被主程序加载时就实例化窗体! 然后再根据需要显示出来! 应该就可以互相发送消息了! 呵呵! 为啥不从特定的基类继承下来 或者实现相应的接口 这样调用起来不是更方便! 当然发消息也可以! 呵呵!
sololie 2013-04-26
  • 打赏
  • 举报
回复
你都知道h=0了,就是没找到这个窗口的句柄,发送消息当然失败。 主窗口当然能找到句柄,除非程序关闭了才找不到。 跟dll通讯用其他方式,如内存映射、管道。。。
酣酣 2013-04-25
  • 打赏
  • 举报
回复
H=0表示没有找到Tform1的实例 当然无法响应了! 可能Tform1根本没有创建对应的实例! 不过Tform1和Tform2同在一个dll下互相引用单元直接调用即可! 不明白为什么一定要发消息! 呵呵!
fengemail8 2013-04-25
  • 打赏
  • 举报
回复
引用 1 楼 lengyuehui 的回复:
H=0表示没有找到Tform1的实例 当然无法响应了! 可能Tform1根本没有创建对应的实例! 不过Tform1和Tform2同在一个dll下互相引用单元直接调用即可! 不明白为什么一定要发消息! 呵呵!
我表达错了, 应该DLL2,发消息到DDL1里在Form1
wztimes 2013-04-25
  • 打赏
  • 举报
回复
H := FindWindow('Tform1',Nil);,,得到H=0 至少先把句柄找到再说吧

5,928

社区成员

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

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