VC6中有多个模态对话框?

时间:2011-12-23 16:31:33

标签: c++ visual-c++ mfc modal-dialog vc6

我正在开发一个应用程序,允许用户编辑在应用程序的其他部分生成的发票。查看发票时,如果选择了编辑>编辑发票,则会启动模式对话框

void CViewInvoiceView::OnEditEditinvoice() 
{
    CEditInvoiceDlg dlg;
    if (dlg.DoModal() == IDOK)
    {
        // Do Stuff
    }
}

这很好用。但是,由于最近的规范更改,我现在需要提取与发货信息相关的字段,并通过单击第一个对话框中包含的编辑发送按钮,在单独的对话框中对其进行编辑。 / p>

void CEditInvoiceDlg::OnButtonEditshipping() 
{
    CEditInvoiceShippingDlg shippingDlg;
    shippingDlg.m_shipToList = &m_shipToList;

    if (shippingDlg.DoModal() == IDOK)
    {
            // Do Stuff
    }

}

我的问题是我无法打开第二个对话框(CEditInvoiceShippingDlg)。消息地图看起来不错

BEGIN_MESSAGE_MAP(CEditInvoiceDlg, CDialog)
...
ON_BN_CLICKED(IDC_BUTTON_EDITSHIPPING, OnButtonEditshipping)
...
END_MESSAGE_MAP()

但是如果我在我的OnButtonEditshipping()函数中放置一个断点,那么它就永远不会停止。单击编辑运送按钮实际上会关闭它所包含的对话框,而不是打开第二个。

1 个答案:

答案 0 :(得分:0)

查看resource.h文件,确保没有两个ID分配给同一个号码。您还应该检查以确保它们都不在保留范围内:MSDN TN020: ID Naming and Numbering Conventions