VC 在DLL中显示窗体

swankie 2008-07-30 12:28:34
我用mfc extents dll 建立一个dll 除了自动生成的dllmain外,自己定义了一个接口,用于显示我的窗体。可是create都不成功,更别受显示界面了.
下面是代码。帮帮忙哪里有问题。


extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
// Remove this if you use lpReserved
UNREFERENCED_PARAMETER(lpReserved);

if (dwReason == DLL_PROCESS_ATTACH)
{
TRACE0("SUBFORMDLL2.DLL Initializing!\n");

// Extension DLL one-time initialization
if (!AfxInitExtensionModule(SubFormDll2DLL, hInstance))
return 0;

new CDynLinkLibrary(SubFormDll2DLL);
}
else if (dwReason == DLL_PROCESS_DETACH)
{
TRACE0("SUBFORMDLL2.DLL Terminating!\n");
// Terminate the library before destructors are called
AfxTermExtensionModule(SubFormDll2DLL);
}

AfxMessageBox("9");//----------------------我自己加的显示。

return 1; // ok
}


extern "C" int __declspec( dllexport )
Init(CWnd* hWnd)
{
subForm1 dd;
dd.Create(IDD_DIALOG1,hWnd);//运行到这里就错误了,怎么解决???
dd.ShowWindow(SW_SHOW);
return NULL;
}

...全文
156 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
swankie 2008-07-31
  • 打赏
  • 举报
回复
问题是解决了,因为调用客户端exe程序的问题。但是我没查到具体那里出现了问题。对MFC的环境还是不精通啊。
BlueEngine 2008-07-31
  • 打赏
  • 举报
回复
与dll类型无关。在dll中使用资源,是需要设置资源句柄的。
swankie 2008-07-31
  • 打赏
  • 举报
回复
6楼,我看了一下,你用的应该是regular dll吧,我想做一个Extension dll,我不想搞com组件,就想做一个普通的动态库。
难道通过动态库的extern 函数接口,不能创建窗口吗?
swankie 2008-07-31
  • 打赏
  • 举报
回复
感谢回复,6楼的一会试试,7楼你还没到你说的那个地方呢,我知道是局部变量,我create就出现错误了,主要我先测试create成功了。
na_he 2008-07-30
  • 打赏
  • 举报
回复
首先要把窗后创建出来,隐藏起来,导出接口供外部调用,从而实现显示的功能。
phisherr 2008-07-30
  • 打赏
  • 举报
回复
dd.Create(IDD_DIALOG1,hWnd);

hWnd 哪里来的
  • 打赏
  • 举报
回复
因为你的dd是个局部变量啊,create,show完了就是dd的析构函数了,通常窗口类的析构函数都会destroy窗口
BlueEngine 2008-07-30
  • 打赏
  • 举报
回复
void ClassInDll::ShowDlg()
{
HMODULE holdsource,hModuleDLL;
hModuleDLL = theApp.m_hInstance;
holdsource = ::AfxGetResourceHandle();
::AfxSetResourceHandle(hModuleDLL);


Dlg dlg;
dlg.DoModal();

::AfxSetResourceHandle(holdsource);
}
swankie 2008-07-30
  • 打赏
  • 举报
回复
怎么解决啊,哪里的问题呢。
swankie 2008-07-30
  • 打赏
  • 举报
回复
我去掉了create的第二个参数,执行也是错误的。
swankie 2008-07-30
  • 打赏
  • 举报
回复
2楼,参数传递的啊,怎么了。
3楼,现在create就出现了错误啊。

15,466

社区成员

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

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