下面是我写的“打开文件”按钮的响应函数中的代码,怎么点击 “打开文件”按钮后能弹出包含内容为“dfg”的提示框,但不能显示打开文件对话框啊?!
    CFileDialog dlg(TRUE);
   //TRUE为OPEN对话框,FALSE为SAVE AS对话框

   if(dlg.DoModal()==IDOK)
   {
  AfxMessageBox("dfg");  }
请高手指点一下,非常感谢!!

解决方案 »

  1.   

    我同事的电脑运行也可以,我用的是vs2005,是不是我的配置缺点什么或是多点什么啊,我将同时的拷了过来,结果我的编辑器自动修改运行时库为:多线程调试(/MTd),之后就出现了这种情况。同事的是“多线程调试 DLL (/MDd)”,我若改为“多线程调试 DLL (/MDd)”,则出现提示:#error Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]
    ,网上说,应使用“在共享 DLL 中使用 MFC”,我照做后还是报这个错,郁闷啊
      

  2.   

    在代码 if(dlg.DoModal()==IDOK)处设置断点
    跟踪查看下原因
      

  3.   

    调用dlg.DoModal()返回的是IDOK啊,但就是显示不出打开文件对话框。
      

  4.   

    不是,就是基于对话框程序,程序中用到了log4cxx
      

  5.   


    最好的办法就是你再新建一个基于对话框的程序,就用一个按钮测试一下就知道是不是log4cxx的影响如果不是就是你创建过程中选择了别的选项,创建时用默认的如果再不是,就是你的2005出问题了
      

  6.   

    现在你用的什么选项?共享mfc dll?多线程调试版本?
      

  7.   

    是那两个选项,可我的同事用的是“共享mfc dll”和“多线程调试 DLL (/MDd)”,我们俩的程序都是共享的。我若用他使用的选项就出错。
      

  8.   

    你可以把两个选项改成一致的 你选择共享mfc dll的时候 后面会自动切换成多线程调试 DLL (/MDd)
    你不可以是不是因为你选择的是静态连接mfc lib啊
    多线程调试 DLL (/MDd)本意很明显是选择多线程调试版本的dll方式的runtime
    这个必须和你使用的dll里面的runtime是一致的