微软研究院的高手请进,迫切需要你们的支持!(300分求解)
http://www.csdn.net/expert/topic/802/802513.xml?temp=.6049768
http://www.csdn.net/expert/topic/800/800320.xml?temp=5.584353E-02
同一问题,上两贴已经发了200分,此处在追加100分。
看上边的题,如能解决,300分全部敬上。
CFileDialog 对话框在DCOM环境中不能用,反复调试,发现了问题所在,但不知该如何解决。
大家有兴趣可以做一个试验,随便生成一个对话框,放一个按钮,在按钮的事件中写下列代码:
void CTestOpenDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CFileDialog dlg(TRUE);
dlg.DoModal();
}
编译,运行,没有问题!
下边,开始模拟我的环境,在stdafx.h中加入
#include <atlbase.h>
在Project -> Settings 中设置PreProcessor Definitions
添加 _WIN32_DCOM
第三步,在你的app 的Instance 和Extance中添加如下的代码
BOOL CTestOpenApp::InitInstance()
{
HRESULT hRes = CoInitializeEx(NULL, COINIT_MULTITHREADED);
.......
...
}
int CTestOpenApp::ExitInstance()
{
CoUninitialize();
return CWinApp::ExitInstance();
}
编译运行,你会发现,CFileDialog对话框,弹不出来了,把HRESULT hRes = CoInitializeEx(NULL, COINIT_MULTITHREADED);注释调,就可以,显然是和DCOM有什么冲突?
怎么解决呢?
高手们站出来吧!!!!!