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

dll中调用CFileDialog的DoModal不能显示,该怎么处理

2012-04-06 
dll中调用CFileDialog的DoModal不能显示在我的动态库的一个函数中,需要调用显示一个CFileDialog,于是我的

dll中调用CFileDialog的DoModal不能显示
在我的动态库的一个函数中,需要调用显示一个CFileDialog,于是我的代码如下:
void CTest::Func()
{
  AFX_MANAGE_STATE(AfxGetStaticModuleState());
  CFileDialogdlg(TRUE);
  dlg.DoModal();
}
运行效果是CFileDialog不显示,并且程序失去响应,我后来在动态库中又新建了一个对话框类CTest2,然后我将上述代码改为
void CTest::Func()
{
  AFX_MANAGE_STATE(AfxGetStaticModuleState());
  CTest2 dlg;
  dlg.DoModal();
}
这样对话框可以显示出来,这是为什么呢,是不是涉及到资源句柄方面的问题啊,我也试过
  HINSTANCE hIRC=AfxGetResourceHandle();  
  AfxSetResourceHandle(::GetModuleHandle("MyDll.dll"));  
  CFileDialogdlg(TRUE);
  dlg.DoModal();  
  AfxSetResourceHandle(hIRC);
这样也不行,而且貌似AfxGetResourceHandle()与GetModuleHandle("MyDll.dll"))是相等的啊,请高人指教!

[解决办法]
CFileDialog类是你自己写的吗?
[解决办法]
CFileDialog dlg (TRUE, "*.*", NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ENABLESIZING|OFN_EXPLORER, _T("All Files (*.*)|*.*||"), NULL);
类似上面的,参数写全
[解决办法]
应该是没问题的
我试了一下可以
[解决办法]
楼主是想实现读文件的功能吧。刚才我验证了下,问题不是出在CFileDialog 上,而是AFX_MANAGE_STATE(AfxGetStaticModuleState()); 在你用VC单独调试时,应该不用加这句话吧。

热点排行