我用dll建立了一个窗体,怎么与之里面的控件通讯?

解决方案 »

  1.   

    看你怎么建立的了:如果用同版本的vcl编译的exe和dll,那么建立窗体的函数最好能够返回一个p:pointer类型变量,给exe调用,exe调用他的时候tform(p).xxx就可以了。如果想让dll访问exe的窗体,可以在创建dll窗体的时候(或者任何时候)调用dll的某个函数,并传入exe窗体或者任何对象(强制转换成指针类型),并在dll里面强行转换回来后当作dll内部变量全局访问就是了。以上方法不太好,因为要求都用delphi并且vcl版本必须相同。不如变通一下,利用消息通知代替强制类型转换后的成员函数和变量的调用:别的一样,就是dll的返回值和传入dll函数的值都是hwnd类型,分别代表dll的窗体和exe的某窗体句柄。互相访问的时候发送自定义消息就是了。但是,最好的方法,就是把dll的窗体做成com组件。