SendMessage(0分)

  • 主题发起人 主题发起人 yz_qing
  • 开始时间 开始时间
Y

yz_qing

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在FORM2里的BUTTON1的ONCLICK事件里使用SendMessage(Form1.Handle,WM_CLOSE,0,0);也就是说在Form2里的Button1的OnClick事件里发个消息给Form1,让其关闭Form1的窗口,但From1调用From2的时候是通过我做的一个DLL库文件来实现的,编译运行后却报这种错误,请问是什么原因?<br>Aceess violation at address 00F2EA3D in module 'Project1dll.dll'.Read of address 000002F4.
 
form1是不是主窗体?<br>form1关了是不是应用程序也结束了?
 
to kiths:Form1是主窗体,From1关了应用程序是要结束的,你知道是什么原因吗?
 
&gt;&gt;&gt;&gt;但From1调用From2的时候是通过我做的一个DLL库文件来实现的<br>&nbsp; From2中代码并没有From1全局变量,所以。。。<br>&gt;&gt;&gt;&gt;Form1是主窗体,From1关了应用程序<br>&nbsp; 这是Delphi人为规定的吧。。?
 
form1关闭的时候资源都释放了,就会报内存错误<br>你可以用application.terminate关闭程序<br>或者用别消息发给主窗体<br>主窗体自己处理消息<br>
 
TO 刘麻子:Form2中代码没有Form1全局变量?是什么意思?在FORM2中要uses Form1吗?
 
&nbsp;不懂。。。 这个麻烦。。。
 
當然要uses form1啦!!
 
我USES Form1啦,可是还是出现同样的错误,该如何处理?
 
&nbsp;form2是谁创建的??
 
&nbsp;是自动创建还是exe调用dll中函数创建的。。。还是。。 &nbsp;??
 
是静态创建的,不是动态创建的
 
&nbsp;发自定义消息给form2,让他得知form1的句柄
 
我晕~~~~~<br>我已经搞定了,不过 楼上的那个意见我没有试过,不知道怎么发自定义消息给FORM2,给个具体的例子好吗?
 
&nbsp;你怎么搞定的?能不能说说?? 听课 :)<br><br>无非就是sendmessage(form2句柄,自定义消息{这个是一直数值} ,相关数值1,相关数值)<br><br>发的时候我们可以把句柄作为 相关数值1给他。。
 
哈哈哈。人喜欢把简单问题复杂化。<br>我记得有人说过:<br>训练有素的头脑已经习惯了,复杂的思考,却往往会被问题的简单性难住。
 
我再试试,刘老师,不要那么大火气麻,听人说火气太大对身体不好也<br>哈哈哈^_^
 
晕,不是说我了吧?嘿嘿,我可没生气呀。可能是我话没说清楚。。我实际意思是:<br><br>1.发自定义消息<br>就是sendmessage(form2句柄,自定义消息{这个是一个我们规定的数值} ,相关数值1,相关数值)<br>发的时候我们可以把句柄作为 相关数值1给他。。 &nbsp;<br><br>2.我已经搞定了<br>你怎么搞定的?能不能说说?? 听课 :)<br><br>
 
刘老师:我是这样搞定的:<br>首先我在DLL的函数uCreateForm( )里加了一个参数aHandle:THandle<br>然后在DLL里uses Unit2 in 'Unit2.pas'{Form2};<br>接下来在Unit2里Uses Unit1;并且定义了一个变量:var exeHandle:THandle;<br>下一步在Unit1里调用DLL中的这个函数传给aHandle参数的值为Application.Handle<br>最后在Unit2的Button1OnClick事件中:SendMessage(exeHandle,WM_CLOSE,0,0);<br>OK,完成!!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部