我做了个对话框(MFC),然后想从对话框中,再点击菜单弹出子对话框
但我现在发现这个弹出的子对话框不能被激活,就是它不能响应鼠标和键盘的动作,问题一般出在哪??

解决方案 »

  1.   

    CDialog * pDlg = new CDialog;
    if(pDlg)
    {
       pDlg->Create(IDD_DIALOG1,this);
       pDlg->ShowWindow(SW_SHOWNORMAL);
    }
      

  2.   

    你可以先在MFC中添加一个新的对话框,然后在按钮事件中添加 CTestDlg test;//ctestdlg 是新对话框的类
    test.domodule();
      

  3.   

    同意二楼的,设置一下ShowWindow函数的参数啦,SW_SHOWMAXINIZE-最大化,SW_HOWNORMAL正常显示。
      

  4.   

    #if !defined(AFX_OPEN_H__61BF9A2E_6187_49C4_A144_055E6582E1B5__INCLUDED_)
    #define AFX_OPEN_H__61BF9A2E_6187_49C4_A144_055E6582E1B5__INCLUDED_#if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    // open.h : header file
    ///////////////////////////////////////////////////////////////////////////////
    // open dialogclass open : public CFileDialog
    {
    DECLARE_DYNAMIC(open)public:
    open(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs
    LPCTSTR lpszDefExt = NULL,
    LPCTSTR lpszFileName = NULL,
    DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
    LPCTSTR lpszFilter = NULL,
    CWnd* pParentWnd = NULL);protected:
    //{{AFX_MSG(open)
    // NOTE - the ClassWizard will add and remove member functions here.
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
    };//{{AFX_INSERT_LOCATION}}
    // Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_OPEN_H__61BF9A2E_6187_49C4_A144_055E6582E1B5__INCLUDED_)#include "stdafx.h"
    #include "luxi.h"
    #include "open.h"#ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif/////////////////////////////////////////////////////////////////////////////
    // openIMPLEMENT_DYNAMIC(open, CFileDialog)open::open(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName,
    DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) :
    CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd)
    {
    }
    BEGIN_MESSAGE_MAP(open, CFileDialog)
    //{{AFX_MSG_MAP(open)
    // NOTE - the ClassWizard will add and remove mapping macros here.
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()BOOL CLuxiDlg::OnCommand(WPARAM wParam, LPARAM lParam) 
    {
    POINT l;
    l.x=LOWORD(lParam);
    l.y=HIWORD(lParam);
    // TODO: Add your specialized code here and/or call the base class
    int nID=LOWORD(wParam);
    switch(nID)
    {
    case ID_MENUITEM32771:
     //fileopen.;
    Input open;//创建对话框实例

    open.DoModal();//调用对话框
    // open.EnableWindow(1);
    //CLuxiDlg::MessageBox("kl","l",IDD_DIALOG1);
    AfxMessageBox("sakfdgshg");
    // DialogBox(AfxGetApp(),"ff","KJ");
    //CLuxiDlg::GetSystemMenu(1);

    }
    return CDialog::OnCommand(wParam, lParam);
    }
    是上面这样子的
    有邮箱可以打包发过去,望能帮改一下
      

  5.   

    CDialog * pDlg = new CDialog;
    if(pDlg)
    {
       pDlg->Create(IDD_DIALOG1,this);
       pDlg->ShowWindow(SW_SHOWNORMAL);
    }这段代码加到哪里??
      

  6.   

    CDialog * pDlg = new CDialog;
    if(pDlg)
    {
       pDlg->Create(IDD_DIALOG1,this);
       pDlg->ShowWindow(SW_SHOWNORMAL);
    }

    CCTestDlg TestDlg;
    TestDlg.DoModal();
    直接加在你"点击菜单"处理的地方就可以了
      

  7.   

    在各位大侠的帮助下终于解决了,我的作法是把要创建的对话框的style设为overlapped.但是不知道为什么是这样,所以继续拿出来 讨论.