【问题标题】:Multiple Modal Dialogs in VC6?VC6中的多个模式对话框?
【发布时间】:2011-12-23 16:31:33
【问题描述】:

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

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

这很好用。但是,由于最近的规范更改,我现在需要提取与运输信息相关的字段,并通过单击第一个对话框中包含的 Edit Shipping 按钮在一个单独的对话框中使它们可编辑。

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() 函数中放置一个断点,它就永远不会停在那个点上。点击 Edit Shipping 按钮实际上会关闭它所在的对话框,而不是打开第二个对话框。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 啊,这就是问题所在!在规范更改之前,我使用按钮从发票中删除所有运输信息,所以当我开始处理新对话框时,我只是更改了 ID 和标题。从消息映射中删除 'ON_BN_CLICKED(IDC_BUTTON_CLEARSHIPPING, OnButtonClearshipping)' 解决了这个问题,但我也清理了我的 resource.h 文件。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 2014-07-28
    • 1970-01-01
    相关资源
    最近更新 更多