【发布时间】: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