一. 在第一个对话框里怎样启动第二个对话框...?二, MFC的对话框默认的是'回车键'退出. 如何去掉.三, 还没有出来.四, 希望给出代码. 五, 谢谢..

解决方案 »

  1.   

    CFileDialog dlg(参数);
    dlg.DoModal()
      

  2.   

    首先回答第一个问题“在第一个对话框里怎样启动第二个对话框...?”
        (1)、在第一个对话框的.h 中加入第二个对话框的.h
        (2)、在第一个对话框的.cpp中需要调用的地方加入如下代码:
               CYourSecondDlgClass secondDlg;
               secondDlg.DoModal();
        (3)、以此类推。第二个问题“MFC的对话框默认的是'回车键'退出. 如何去掉.”的回答
         在对话框的.h中的如下位置添加“看此行代码”前的函数定义
         // Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CMyDlg)
    protected:
    virtual void DoDataExchange(CDataExchange* pDX);
    virtual BOOL PreTranslateMessage(MSG *pMsg);//看此行代码
    //}}AFX_VIRTUAL
         再在对话框的.cpp中加入PreTranslateMessage函数的声明代码,如下:        BOOL CMyDlg::PreTranslateMessage(MSG *pMsg)
            {
    if (pMsg->message == WM_KEYDOWN)
    {
    if (pMsg->wParam == VK_RETURN)
    {
       return TRUE;
    }
    }
    return CDialog::PreTranslateMessage(pMsg);
            }解答完毕。
    注:同样可以屏蔽其它键,如"ESC"等。
      

  3.   

    To daizh() ( ) 如果我经常用第一个对话框启动第二个对话框. 按照你的方法很不好. 还有安照你的方法第二个对话框想保存的数据每次启动都要保存.
    我先说说我想做的事吧.
    我在CMyApp里建立了这两个对话框的指针.
    CFirstDlg * fstDlg;
    CSencondDlg * scdDlg;
    在InitInstance()里
    new 成个对象.然后呢. 启动第一个frtDlg. 第一个用DoModal().
    关于第二个呢?~ :) 如何启动.? 
    当用fstDlg启动scdDlg的时候, 就要scdDlg.ShowWindow(SW_SHOW);
    scdDlg.ShowWindow(SW_HIDE)就可以了.怎么实现?~
      

  4.   

    第一个用domodal()就可以。
    垮工程的可以这样WinExec("C:\\dlg.exe",SW_SHOWNORMAL|SW_SHOW);第二个重载OnOk函数,封掉里面的一行代码。