接收不到消息的疑惑!!!

zhhahuatian 2003-09-30 09:20:01
在向一个窗体发消息时,窗体最小化时收不到消息,我用的发消息是sendmessage();在vc中此问题不出现,我在主窗体中加入wmcopydata() message wm_copydata函数接收消息,当窗体最小化时接收不到消息,最大化时正常,当窗体在后台时也正常,只有最小花时收不到!!
...全文
79 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
laoli6666 2010-06-01
  • 打赏
  • 举报
回复
好像与Delphi编译环境有关,把Delphi关掉就可以接收到了!!!
我也是因为这个问题折腾了好多天!!好像Delphi开着时候有些功能就是实现不了。
snowfog 2003-09-30
  • 打赏
  • 举报
回复
关注
zhhahuatian 2003-09-30
  • 打赏
  • 举报
回复
我向窗体发消息是为了得到数据,写入数据库,是调用底层程序想窗体发copydata 消息,然后处理,收不到消息,就得不到数据
FrameSniper 2003-09-30
  • 打赏
  • 举报
回复
你向窗体发消息是要控制窗体的行为,窗体行为的产生是靠你的消息去控制的
而窗体自己最小化是用户操作窗体产生的行为,这个时候窗体响应的是用户的操作,而不是你发的那个消息
Alanwn 2003-09-30
  • 打赏
  • 举报
回复
为什么呢?关注
xzhifei 2003-09-30
  • 打赏
  • 举报
回复
不知道你是怎么写的,下面是我经常用到的,决对没有问题

发送端:

procedure Init;
var
s : pchar;
h : hwnd;
buf:tagCOPYDATASTRUCT;
begin
h := FindWindow('TForm1', Nil);
if h <> 0 then
begin
GetMem(s,100);
buf.lpData :=s;
buf.cbData:=100;
buf.dwData :=100;
strpcopy(s, ParamStr(0));
SendMessage(h, WM_COPYDATA, 0, integer(@buf));
end;
end;

接收端:
procedure TForm1.WM_COPYDATA(var msg: TMessage);
var
P:^tagCOPYDATASTRUCT;
begin
p:=Pointer(Msg.lParam);
ShowMessage(strpas(p.lpData));
end;
GiltBook 2003-09-30
  • 打赏
  • 举报
回复
最小化时应该是可以接收消息的。
发送消息后是否还该加上Application.HandleMessage试试瞧!

5,386

社区成员

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

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