关于MFC扩展dll的问题 救急

bingying19872008 2009-08-30 06:52:27
第一次,我建了一MFC扩展DLL,里面就建了一对话框A然后导出,什么而外操作都没添加.
然后建了一对话框程序B.B中单击确定时 调用A的DoMOdal。A对话框弹出.但是感觉好像它什么消息都接不到,点A的任何按钮都没效果,拖动它还会发现它是透明的,不会重绘背景.然后我在A中重载了DoModal,仅重载没添加任何额外代码。发现OK了.
但是总觉得不舒服,不知道为啥要那样做.
然后第二次,我把一对话框程序 弄成MFC扩展DLL,和上次一样,单击OK,对话框弹出,但是上面的任何控件都没反应.于是我又去重载DoModal,但是应用程序在调用DoModal时告诉 不支持该操作怎么办啊
...全文
90 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bingying19872008 2009-09-09
  • 打赏
  • 举报
回复
感谢3楼兄弟,在DLL中的函数开始就加入AFX_MANAGE_STATE(AfxGetStaticModuleState());
后 的确OK,MFC规则DLL能正常调用了.不必手动调用
// HINSTANCE exe_hInstance = AfxGetResourceHandle();

//获取DLL模块句柄

// HINSTANCE dll_hInstance = GetModuleHandle(_T("fmcdll.dll"));



// AfxSetResourceHandle(dll_hInstance); //切换状态
ShowDlg(); //此时显示的是DLL的对话框

// AfxSetResourceHandle(exe_hInstance); //恢复状态
以上这么调用估计在vc6中可行.因为我看的例子用的是vc6写的.我08下若手动调切换资源.调用ShowDLg时会崩溃,断点显示空的资源.(估计吧还是没能切换过去).AFX_MANAGE_STATE(AfxGetStaticModuleState()); 用了这个东西就OK了 的确很方便 .thanks
bingying19872008 2009-09-09
  • 打赏
  • 举报
回复
那么能否请大家帮忙弄个MFC规则DLL和调用MFC规则DLL
以及MFC扩展DLL和调用MFC扩展DLL的 例子...
这方面的资料不多啊.搜到的一份资料是用的vc6。换过来后怪怪的....谢谢大家
我mail:3151765952008@live.cn
WuXinyang 2009-09-03
  • 打赏
  • 举报
回复
你的VS哪个版本的,我用2003 2005 2008都不会出现你的那个问题.
raymonzhao 2009-09-03
  • 打赏
  • 举报
回复
HINSTANCE hInstanceOld = AfxGetResourceHandle();
AfxSetResourceHandle(XXXXDLL.hModule);

XXXXDLL在DLLMAIN中.
阿先森 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zougangx 的回复:]
在调用dll的时候切换资源 函数中调用 AFX_MANAGE_STATE(AfxGetStaticModuleState());

[/Quote]
MFC Extension DLL 中貌似无法使用 AFX_MANAGE_STATE(AfxGetStaticModuleState());
raymonzhao 2009-09-01
  • 打赏
  • 举报
回复
在用之前切换一下资源链,用完了再把资源链切回来.
zougangx 2009-08-30
  • 打赏
  • 举报
回复
在调用dll的时候切换资源 函数中调用 AFX_MANAGE_STATE(AfxGetStaticModuleState());
bingying19872008 2009-08-30
  • 打赏
  • 举报
回复
恩 我也怀疑是资源问题 看来只能换了.
阿先森 2009-08-30
  • 打赏
  • 举报
回复
MFC Extension DLL 中的资源句柄有些问题,建议用 MFC Normal Dll

15,471

社区成员

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

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