如何调用VC DLL显示界面?

huangxi1981 2003-08-25 10:16:33
我有个带界面的DLL,在定义导出函数的时候怎么定义才能正常的调用?
这是我写的DLL中导出函数实现部分:
extern "C" _declspec(dllexport) bool netpower()
{
CTD a;
a.DoModal();
return TRUE;
}
CTD是一个界面类
运行通过但测试的时候界面无法显示
请问错在那里?
...全文
298 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ripyu 2003-08-25
  • 打赏
  • 举报
回复
最好返回指针,在主程序中
显示
huangmin314 2003-08-25
  • 打赏
  • 举报
回复
关注
huangxi1981 2003-08-25
  • 打赏
  • 举报
回复
调用成功
非常感谢!
zhangyilan 2003-08-25
  • 打赏
  • 举报
回复
为了使用对话框资源,需要添加


extern "C" _declspec(dllexport) bool netpower()
{
// 这一句很重要
AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
CTD a;
a.DoModal();
return TRUE;
}
huangxi1981 2003-08-25
  • 打赏
  • 举报
回复
哦,能说具体点吗?
我是用c++builder来调用
调用程序是:
TForm1 *Form1;
typedef bool (__cdecl *_netpower)();
typedef int (__stdcall *_maxvalue)(int val);

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
HINSTANCE hDLL;
_netpower netpower;
// SetResourceHandle(theApp.m_hInstance);
hDLL = LoadLibrary("testdll.dll");
netpower = (_netpower)GetProcAddress(hDLL, "netpower");
netpower();

FreeLibrary(hDLL);


}
//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
HINSTANCE hDLL;
_maxvalue maxvalue;
hDLL = LoadLibrary("testdll.dll");
maxvalue = (_maxvalue)GetProcAddress(hDLL, "maxvalue");
int j=maxvalue(1);
ShowMessage(IntToStr(j));
FreeLibrary(hDLL);

}
后面那个调用是测试调用VC写的不含界面的DLL,能成功调用
但调含界面的却不行
是调用程序的问题还是DLL的问题?

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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