动态库内创建窗体的奇怪现象,请看看!

yx_mmcall 2003-08-21 09:58:47
我在一dll内创建了一个窗体,
在另一个exe中调用dll。

这个窗体正常调用了。奇怪的是在Windows下端的任务栏上出现了exe和dll中窗体名称这两个任务!我观察了当前的进程发现dll确实没有独自工作,只有exe的进程。

这是怎么回事?怎样才能解决这个问题?

谢谢!
...全文
20 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yx_mmcall 2003-08-21
  • 打赏
  • 举报
回复
高手!
十分清楚,万分感谢!
hongliqiu 2003-08-21
  • 打赏
  • 举报
回复
补充:

上面方法一般使用静态调用Dll时使用。动态调用dll时,如果不释放dll,调用也没有问题。如果调用dll函数结束后想马上释放dll库,那么还需要在调用FreeLibrary(DllHandle)前恢复DLL的Handle。
hongliqiu 2003-08-21
  • 打赏
  • 举报
回复
这是正常的问题,解决方法如下

DLL中:
extern "C" __declspec(dllexport) void __stdcall SetDLLAppHandle(HWND MainWindowHandle);
void __stdcall SetDLLAppHandle(HWND MainWindowHandle) {
Application->Handle = MainWindowHandle;
}

主程序主窗体OnCreate:
void __fastcall TFormMain::FormCreate(TObject *Sender)
{
SetDLLAppHandle(Handle);
}

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧