首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

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

2012-03-13 
新手求助:dll被载入后,主程序不响应本人刚学dll,自己试着写了一个dll之后,在主程序中调用dll,dll中的窗口

新手求助:dll被载入后,主程序不响应
本人刚学dll,自己试着写了一个dll之后,在主程序中调用dll,dll中的窗口正确显示了,但此时dll窗口是活动的,主程序窗口变成非活动窗口,并且不响应任何操作,变灰了。

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

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

C/C++ code
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);               }}


[解决办法]
dll的窗口是不是模态显示的?
[解决办法]
模态显示是不行的,这样主窗体就处于禁用状态。改成Show方法就行了。

frmAbout->Show();

考虑到窗体的Z-Order问题,你可以将DLL中窗口的FormStyle设置成fsStayOnTop

热点排行