dll中能够弹出对话框吗? 我在dll(mfc扩展)中增加了一个对话框,然后在其中一个函数中弹出此对话框,结果出错,但是用AfxMessageBox就没问题。这是什么原因?可以弹出自定义的对话框吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没有问题,用AfxMessageBox没错的 可是为什么以下代码运行时出错?去掉就没问题。HINSTANCE hInstResourceClient = AfxGetResourceHandle();AfxSetResourceHandle(::GetModuleHandle("pophook.dll"));CDlgPopHook dlg;if(dlg.DoModal()==IDOK){running=FALSE;return TRUE;}AfxSetResourceHandle(hInstResourceClient);如果换成AfxMessageBox()也没问题。如果在dlg.DoModal()之前加上AFX_MANAGE_STATE(AfxGetStaticModuleState());编译就会出错:mfcs42d.lib(dllmodul.obj) : error LNK2005: __pRawDllMain already defined in PopHook.objmfcs42d.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in PopHook.objmfcs42d.lib(dllmodul.obj) : error LNK2005: __pRawDllMain already defined in PopHook.obj还请高手指点!!! 我这样做class AFX_EXT_CLASS CDlgPopHook : public CDialog{...}编译还是一样的错误。 另外,补充一点:这个dll是个系统hook 我也试过在dll中弹出对话框,但没成功。后来用ATL把它做成一个com 就ok了。试试。 你要CreateDialog吧?这么直接好像不行。最好用new 声明对象不太好 回runner:我只想弹出一个模态对话框,不是非模态。回wujingang:怎么那么麻烦?有没有简单一点的办法?继续向高手请教! HINSTANCE hInstResourceClient = AfxGetResourceHandle();{ AfxSetResourceHandle(::GetModuleHandle("pophook.dll")); CDlgPopHook dlg; if(dlg.DoModal()==IDOK) { running=FALSE; } AfxSetResourceHandle(hInstResourceClient);}return TRUE; 在调用前加上AFX_MANAGE_STATE(AfxGetStaticModuleState()); 還有一個可能,您使用了Release version (exe/dll)呼叫了Debug version DLL 点击鼠标右键弹出的菜单,如何创建其标记菜单? VC++控制台程序 事件对象 问题 关于charWCHAR的问题 XP系统上面读取大文件是否会自动缓存? 遇到问题:编译能通过,但无法debug. 关于VC编译器的问题 如何屏蔽键盘上的Win键?让我的程序接收后就直接消灭它? 如何在vc6中使用GDI+? vckbase是肿么了,最近发现好像不更新了? 两个线程执行为什么优先级不一样? 关于bind的问题?
HINSTANCE hInstResourceClient = AfxGetResourceHandle();
AfxSetResourceHandle(::GetModuleHandle("pophook.dll"));
CDlgPopHook dlg;
if(dlg.DoModal()==IDOK)
{
running=FALSE;
return TRUE;
}
AfxSetResourceHandle(hInstResourceClient);
如果换成AfxMessageBox()也没问题。
如果在dlg.DoModal()之前加上
AFX_MANAGE_STATE(AfxGetStaticModuleState());
编译就会出错:
mfcs42d.lib(dllmodul.obj) : error LNK2005: __pRawDllMain already defined in PopHook.obj
mfcs42d.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in PopHook.obj
mfcs42d.lib(dllmodul.obj) : error LNK2005: __pRawDllMain already defined in PopHook.obj
还请高手指点!!!
class AFX_EXT_CLASS CDlgPopHook : public CDialog
{
...
}
编译还是一样的错误。
后来用ATL把它做成一个com 就ok了。
试试。
我只想弹出一个模态对话框,不是非模态。
回wujingang:
怎么那么麻烦?
有没有简单一点的办法?继续向高手请教!
AfxSetResourceHandle(::GetModuleHandle("pophook.dll"));
CDlgPopHook dlg;
if(dlg.DoModal()==IDOK)
{
running=FALSE;
}
AfxSetResourceHandle(hInstResourceClient);
}
return TRUE;
AFX_MANAGE_STATE(AfxGetStaticModuleState());