请问为什么我DoModal()显示一个窗体它不调用窗体的OnInitDialog()

解决方案 »

  1.   

    很简单啊
    就是在一个按钮的时间中DOMAL了void CTest::OnBtn()
    {
        CMyDialog md;
        md.DoMal();
    }
      

  2.   

    dlg.h里去掉这句.
    virtual BOOL OnInitDialog();
    就差不多了.
    或者最好改OnInitDialog()如
    CDialog::OnInitDialog()
    {
             return TRUE;  // 将\“关于...\”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
    CString strAboutMenu;
    strAboutMenu.LoadString(IDS_ABOUTBOX);
    if (!strAboutMenu.IsEmpty())
    {
    pSysMenu->AppendMenu(MF_SEPARATOR);
    pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    }
    } // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
    //  执行此操作
    SetIcon(m_hIcon, TRUE); // 设置大图标
    SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码

    return TRUE;  // 除非设置了控件的焦点,否则返回 TRUE
    }
    不过不好,OnInitDialog是个初始化函数,最好调用.