(1)在程序里,我直接创建了一个CFileDialog类对象,代码如下:
  CFileDialog fdlg(TRUE, "img", "*.img", OFN_NOCHANGEDIR|OFN_FILEMUSTEXIST, szFilter);
  fdlg.DoModal();
  对话框无法显示在最上层,我试过新建一个类CNewFileDlg,继承自CFileDialog。并在CNewFileDlg的OnInitDialog函数里面,添加SetWindowPos函数,但是无效。有什么方法可以解决此问题?
 (2)同理,当我创建一个CIPSPropertySheet类对象,并调用对象的Domodal函数显示时,仍无法控制显示在最上层,有什么方法可以解决?  谢谢!

解决方案 »

  1.   

    在对话框资源的属性中选择More Styles中的System modal属性
      

  2.   

    但是,我在代码中是直接创建的CFileDialog类的对象,并没有资源,我该如何做呢?
      

  3.   

    弹出filedialog对话框,怎么会不显示在最上层?
      

  4.   

    我的程序是运行在两个显示器上,程序运行后,左屏(主屏)显示软件操作界面,右屏自动弹出一个信息对话框,该对话框满屏显示。当我在左屏单击菜单项,弹出CFileDialog类和CIPSPropertySheet类生成的对话框后,用鼠标拖动该对话框到右屏后,被右屏的信息对话框覆盖,用户在右屏看不到被覆盖的对话框。此时,只有非法关闭软件,有什么办法可以解决?
      

  5.   

    指定父窗口:
    CFileDialog fdlg(TRUE, "img", "*.img", OFN_NOCHANGEDIR|OFN_FILEMUSTEXIST, szFilter, this);---
    CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );
    pParentWnd 默认值是NULL。
      

  6.   

    楼上的方法我在程序里试了一下,但是仍然不起作用。顺便问一下,CPropertySheet类型的变量如何控制显示在最上层。我在程序中的代码如下:
    CPropertySheet mysheet;
    mysheet.domodal();
      

  7.   

    To:楼上。程序运行时,左屏显示一幅图像,右屏显示一个信息框,这个信息框是满屏的,里面显示图像的信息。这是当我“单击”左屏的程序菜单项“打开本地图像”,则产生一个CFileDialog类的对话框。我用鼠标拖动这个“打开本地图像”对话框到右屏后,就被右屏的信息框覆盖,看不到“打开本地图像”对话框。
    我试过两种办法:
    1.在右屏信息框的OnInitDialog()里面写下如下代码:
      SetWindowPos(&wndBottom,0,0,0,0,SWP_NOSIZE | SWP_NOMOVE);
    2.新创建一个类,CNewFileDlg,继承自CFileDialog。用CNewFileDlg创建“打开本地图像”对话框,并在CNewFileDlg的OnInitDialog()函数里面写下如下代码:
      SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOSIZE | SWP_NOMOVE);
    但是,这两种方法均无效。