程序初始话的时候用 ::CoInitializeEx(NULL,COINIT_MULTITHREADED);初始化COM库,
在打开文件对话框中(CFileDialog)结果出现一下问题:
1、可以显示初始话的文件类型的文件。
2、在选择不同的文件类型时,对话框中无法显示所要的文件。
   例如,初始化文件类型是*.xls,对话框中显示了所有的*.xls的文件,现在选择*.*文件类型,
   结果对话框中没有任何文件显示。
这是为什么?我又用CoInitialize(NULL)初始化,结果就没有上面的问题。
CFileDialog类,和COM库有关系吗?什么样的关系呢?问题解决,愿给所有分。

解决方案 »

  1.   

    理论上CFileDialog无须CoInitialize,有最简工程么?
      

  2.   

    跟COM没关系啊, 是不是你的初始化过滤器参数不对?你的过滤器串应该象这样的:"xls files(*.xls)|*.xls|All Files(*.*)|*.*||"
      

  3.   

    可以参考以下文章
    http://www.vckbase.com/document/viewdoc/?id=940
      

  4.   

    http://support.microsoft.com/kb/287087
      

  5.   

    1、
    我作的是一个带有接口的应用程序,初始化COM库,是为接口所用的,而且必须有。CFileDialog Filedlg(TRUE,_T("csv"),
    _T("usr.csv"),OFN_HIDEREADONLY,
    _T("逗号分隔符文件(*.csv)|*.csv|所有文件(*.*)|*.*||"),this);应该没有错误吧,
    2、对于http://www.vckbase.com/document/viewdoc/?id=940中的例子,你把::CoInitializeEx(NULL,COINIT_MULTITHREADED);加到APP的初始化函数中,再看看有什么结果?选择类型看看。相同的问题就出现了。
      

  6.   

    用了CoInitializeEx(NULL,COINIT_MULTITHREADED),并加了_WIN32_DCOM
    http://www.vckbase.com/document/viewdoc/?id=940中的例子选择*.*没问题
      

  7.   

    http://www.vckbase.com/document/viewdoc/?id=940中
    顺序:1、在CMyApp的InitInstance中添加CoInitializeEx(NULL,COINIT_MULTITHREADED),添加_WIN32_DCOM
    2、在ExitInstance中CoUninitialize();
    3、编译
    4、打开程序,打开文件,文件对话框中显示了,*.*类型的文件,然后再选择另一个数据类型
    看看,出现了什么?文件对话框中空了。