F
fzzf
Unregistered / Unconfirmed
GUEST, unregistred user!
为了解决多语言问题(参见:http://www.delphibbs.com/delphibbs/dispq.asp?lid=3878867),现在修改了Vcl的相关代码,但是为了将源码的修改影响到工程,只能不使用Build with runtime package 选项,但是现在问题来了,原先在Dll中的可以正常调用的Frame现在不能正常显示,望做过这方面东东的大虾指点!
尝试的方法:
1、在exe中的Application.Handle 传入到Dll(只是解决了Form在任务栏中不出现两个问题)
相关代码:
//cpp
TDllFrame* WINAPI CreatePlugIn(HWND lhApp, TForm* lMainForm)
{
if (!ghApp)
{
ghApp = Application->Handle;
Application->Handle = lhApp;
}
if (!DllFrame)
{
DllFrame = new TDllFrame(lMainForm);
}
return DllFrame;
}
//主程学的调用代码
FDllHandle = LoadLibrary("DemoDll1.dll");
if (FDllHandle)
{
FARPROC p = GetProcAddress(FDllHandle, "CreatePlugIn");
if (p)
{
DllCreatePlugIn DllProc = (DllCreatePlugIn)p;
FDllFrame = DllProc(Application->Handle, this);
FDllFrame->Parent = pnlDll;
FDllFrame->Show();
}
}
注:
主程序代码可以正确执行,就是没有办法显示!
尝试的方法:
1、在exe中的Application.Handle 传入到Dll(只是解决了Form在任务栏中不出现两个问题)
相关代码:
//cpp
TDllFrame* WINAPI CreatePlugIn(HWND lhApp, TForm* lMainForm)
{
if (!ghApp)
{
ghApp = Application->Handle;
Application->Handle = lhApp;
}
if (!DllFrame)
{
DllFrame = new TDllFrame(lMainForm);
}
return DllFrame;
}
//主程学的调用代码
FDllHandle = LoadLibrary("DemoDll1.dll");
if (FDllHandle)
{
FARPROC p = GetProcAddress(FDllHandle, "CreatePlugIn");
if (p)
{
DllCreatePlugIn DllProc = (DllCreatePlugIn)p;
FDllFrame = DllProc(Application->Handle, this);
FDllFrame->Parent = pnlDll;
FDllFrame->Show();
}
}
注:
主程序代码可以正确执行,就是没有办法显示!