我在Dll里定义如下:
const
WM_IMPORTRECORDCOUNT = WM_USER+$100;然后在Dll里的一个函数里发消息:
SendMessage (MainHandle, WM_IMPORTRECORDCOUNT, 0, i+1);请问:我在应用程序里怎么才能接收上面这个消息呢?能取到WM_IMPORTRECORDCOUNT这个值吗?
const
WM_IMPORTRECORDCOUNT = WM_USER+$100;然后在Dll里的一个函数里发消息:
SendMessage (MainHandle, WM_IMPORTRECORDCOUNT, 0, i+1);请问:我在应用程序里怎么才能接收上面这个消息呢?能取到WM_IMPORTRECORDCOUNT这个值吗?
const
WM_IMPORTRECORDCOUNT = WM_USER+$100;然后在Dll里的一个函数里发消息:
SendMessage (MainHandle, WM_IMPORTRECORDCOUNT, 0, i+1);请问:我在应用程序里怎么才能接收上面这个消息呢?能取到WM_IMPORTRECORDCOUNT这个值吗?你要在句柄MainHandle(主窗体吧)中也定义一个相同的消息值,然后写一个消息响应事件过程。
类似这样的:
unit untmainconst
WM_IMPORTRECORDCOUNT = WM_USER+$100;type
TFrmMain=class(tForm)
....
privatie
procedure WMIMPORTRECORDCOUNT(var msg:Tmessage);message WM_IMPORTRECORDCOUNT;
public
...
end;procedure Tfrmmain.WMIMPORTRECORDCOUNT(var msg:Tmessage);
begin
showmessage('get the message from dll...'); end;
unit untmaininterface
uses forms....;const
WM_IMPORTRECORDCOUNT = WM_USER+$100;type
TFrmMain=class(tForm)
....
privatie
procedure WMIMPORTRECORDCOUNT(var msg:Tmessage);message WM_IMPORTRECORDCOUNT;
public
...
end;imple.....procedure Tfrmmain.WMIMPORTRECORDCOUNT(var msg:Tmessage);
begin
showmessage('get the message from dll...'); end;
procedure Tfrmmain.WMIMPORTRECORDCOUNT(var msg:Tmessage);
begin
showmessage('get the message from dll...'); end;
上面这个函数是在什么情况下执行的?是不是在Dll里如果有SendMessage就会自动捕获消息,然后执行上面这个函数的?
const WM_IMPORTRECORDCOUNT=WM_USER+500;var
MainHandle:Thandle=0;
DllHandle:Thandle;
procedure INIT_DLL(AMainHandle:THandle;applicationHandle:Thandle);stdcall;
begin
mainHandle:=AMainHandle;//---保存主窗体句柄,用作其他用途
dllHandle:=application.handle;
application.handle:=applicationHandle;
sendmessage(AMainHandle,WM_IMPORTRECORDCOUNT,0,0);
end;类似这样的调用了