dll中不能响应自定义消息

yhl10000 2007-09-07 02:48:21
建立一个dll,里面有个TForm, 自定义消息,并且建立响应函数。但是sendmessage调用没有用,而在我简历一个应用程序,最简单的,如下代码,确实ok的,能够弹出提示框。why?
const
WM_CHANGESIZE= WM_USER+1000;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);

private
procedure OnChangeSize(var msg: TMessage); message WM_CHANGESIZE;
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
sendmessage(self.Handle,WM_CHANGESIZE,0,0);
end;

procedure TForm1.OnChangeSize(var msg: TMessage) ;
begin
showmessage('TFormExplorer.OnChangeSize');
end;
end.
...全文
96 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
budded 2007-09-07
  • 打赏
  • 举报
回复
WM_CHANGESIZE := RegisterWindowMessage('This is a Message From Budded');
用这个发送接收消息肯定没问题!
budded 2007-09-07
  • 打赏
  • 举报
回复
WM_CHANGESIZE := RegisterWindowMessage('This is a Message From Budded');
用这个来发送介绍,保准没问题,呵呵
skertone 2007-09-07
  • 打赏
  • 举报
回复
摘自CSDN某高人:
Borland的天才们无心插柳的设计再一次让我们找到了解决问题的办法。由前面的分析我们知道,在用VCL开发的动态链接库中并没有创建隐藏的窗口来接收Windows消息(CreateHandle不执行),但在动态链接库中如果要显示窗口的话又需要一个父窗口。如何解决这个问题呢?VCL的设计者将保存看不见的窗口句柄的FHandle变量设计为可写,于是我们实际上可以简单地给FHandle赋一个值来为需要显示的子窗口提供一个父窗口。例如,在某个动态链接库插件中要显示窗体,我们通常会在主模块可执行文件中将Application对象的句柄通过动态链接库的某个函数传入并赋值给动态链接库的Application.Handle,类似于:

procedure SetApplicationHandle(MainAppWnd: HWND)
begin
Application.Handle := MainAppWnd;
end;

5,391

社区成员

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

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