程序基本框架是一个对话框包括一个PropertySheet,sheet中有3个继承了PropertyPage的Dialog(分配在堆空间上),现在其中一个page中需要CFileDialog,添加了一个按钮,并在按钮的Click事件中调用如下:
CFileDialog dlg(TRUE);
dlg.DoModal();运行时,点击该按钮,则程序锁死,CFileDialog未显示,主窗口也无法点击(感觉上是DoModal()开始运行,但窗口未正确显示出来),查看加载项发现,仅加载到browerui.dll就中断了,下一加载项应该是setupapi.dll。开发环境:VC++ .NET 2005想请教一下,是不是在PropertyPage中弹出模态对话框要特殊配置(因为在该程序其他窗口内弹出模态对话框均没有问题,只有在PropertyPage中有问题)?有什么方法可以解决?
谢谢

解决方案 »

  1.   

    CFileDialog dlg(TRUE);
    有这样代码?
    CFileDialog dlg(this);
      

  2.   

    CFileDialog dlg();
    dlg.DoModal();
      

  3.   

    CFileDialog第一个参数是选择对话框类型,TRUE表示“文件打开”对话框,FALSE表示“文件保存”对话框。第五个参数才是CWnd* pParent,但该参数一般为默认的NULL就可以,我也已经试过将其设为父级窗口,但问题还是一样存在。
      

  4.   

    问题基本定位,我的PropertySheet是用Create(this, WS_CHILD | WS_VISIBLE);加到主对话框的,所以在此所属的PropertyPage中无法显示模态对话框。将PropertySheet改为DoModal()显示后,可以正常显示,但此时无法让PropertySheet内嵌到主对话框中(DoModal()会让PropertySheet单独显示出来)。请高手指教如何才能让PropertySheet内嵌到主对框内,同时其所属的PropertyPage内也可以显示CFileDialog(主允许DoModal()方式显示)。
      

  5.   

    问题已解决
    m_sheet->ModifyStyleEx(0,WS_EX_CONTROLPARENT); 
    一行OK.