ser*_*rge 0 windows delphi delphi-xe2
我需要应用程序的主要形式执行ClientToParent()和不成功,因为我在一个DLL并且Application变量是nil.我感谢任何人的帮助.
对于跨模块边界的表单引用,您无法执行任何操作.主机应用程序,即使假设它是一个Delphi应用程序,也有一个不同的VCL实例.因此,您无法TForm在DLL中使用应用程序中的实例.如果您使用包,则可以这样做.
您也许可以枚举顶级窗口并找到流程中的窗口.这可能有效,但很麻烦.
更好的方法是公开允许主机提供此类服务的功能.当主机加载你的DLL时,它将提供一个提供必要服务的接口.它可以根据需要转换坐标,也许可以提供其他服务.
我要查询的一件事是你打算打电话ClientToParent.这表明您在不同模块中的控件之间存在客户/父关系.只有在使用包时才可行.我确实想知道您是否完全了解与模块之间的VCL使用相关的限制.