这一句貌似有问题:“Application.Handle := AHandle;”
建议应用程序和DLL同时“Build with runtime library”,共同依赖于rtl,这样Application的实例就是同一个,”Application.Handle“的赋值自然不需要,也不会有问题了。
建议应用程序和DLL同时“Build with runtime library”,共同依赖于rtl,这样Application的实例就是同一个,”Application.Handle“的赋值自然不需要,也不会有问题了。
var
oldApplicationHandle : HWnd;
begin
oldApplicationHandle := Application.Handle;//新增加的
Application.Handle := AHandle;
Application.CreateForm(TfrmTest, frmTest);
try
frmTest.ParentWindow := AParent;
frmTest.BorderStyle := bsNone;
frmTest.WindowState := wsMaximized; frmTest.Show; Result := frmTest;
except
Result := nil;
frmTest.Free;
end;
Application.Handle := oldApplicationHandle;//新增代码
end;你试试
var
oldApplicationHandle : HWnd;
begin
oldApplicationHandle := Application.Handle;//新增加的
Application.Handle := AHandle;
Application.CreateForm(TfrmTest, frmTest);
try
frmTest.ParentWindow := AParent;
frmTest.BorderStyle := bsNone;
frmTest.WindowState := wsMaximized;
frmTest.Show;
Result := frmTest;
except
Result := nil;
frmTest.Free;
end;
Application.Handle := oldApplicationHandle;//新增代码
end;
鉴定完毕,方案可行,好诡异的解决方法,能解释下不?
最后,只好放在Form上。.