新手求助:dll被载入后,主程序不响应

glin2010 2012-02-13 10:39:15
本人刚学dll,自己试着写了一个dll之后,在主程序中调用dll,dll中的窗口正确显示了,但此时dll窗口是活动的,主程序窗口变成非活动窗口,并且不响应任何操作,变灰了。

我猜想,是不是dll此时占用了主程序进程,要让dll窗口和主程序窗口都能响应操作,必须新开线程呢?我还没试过在线程中调用dll窗口。

请各位大大告诉我这是什么原因?


void __fastcall TForm1::ShowDLLaboutClick(TObject *Sender)
{
HINSTANCE ins;
ins = LoadLibrary("./dll/mkabout.dll");
try
{
if(ins == NULL)
throw MyException("Can't Load Library!");
FARPROC proc;
proc = GetProcAddress(ins,"_myAbout"); //一个什么也不做的form
if(proc == NULL)
{
FreeLibrary(ins);
throw MyException("Can't Get Proc Address!");
}
proc();
if(!FreeLibrary(ins))
{
throw MyException("Can't Free!");
}
}
catch (MyException &myException)
{
ShowMessage(myException.test);
}
}


...全文
98 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccrun.com 2012-02-13
  • 打赏
  • 举报
回复
模态显示是不行的,这样主窗体就处于禁用状态。改成Show方法就行了。

frmAbout->Show();

考虑到窗体的Z-Order问题,你可以将DLL中窗口的FormStyle设置成fsStayOnTop
glin2010 2012-02-13
  • 打赏
  • 举报
回复
to songhtao:
窗口显示:frmAbout->ShowModal();

这样显示的。
我不懂电脑 2012-02-13
  • 打赏
  • 举报
回复
dll的窗口是不是模态显示的?
glin2010 2012-02-13
  • 打赏
  • 举报
回复
感谢两位大大的帮助,学习了。

13,825

社区成员

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

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