我把几个Form封装在了Dll中,其中使用了DevexpressBar控件,在程序中调用时发生了错误。procedure ShowForm(AHandle:THandle);stdcall;
var
Form: TSomeForm;
begin
Application.Handle := AHandle;
Form := TSomeForm.Create(Application); //这句出错,信息为无效的窗口句柄
Form.FormStyle := fsMDIChild;
end;经测试,如果没有使用Dev系列控件,则没有问题
var
Form: TSomeForm;
begin
Application.Handle := AHandle;
Form := TSomeForm.Create(Application); //这句出错,信息为无效的窗口句柄
Form.FormStyle := fsMDIChild;
end;经测试,如果没有使用Dev系列控件,则没有问题
跟gdiplus有关系,要初始化。
无有效解决方案,改DLL为BPL即可解决.
要想内部和外部能够统一交互,则内外的全局变量必须是相同的
这些全局变量未必仅仅是Application,Screen等