VC6中的多个模式对话框?
Posted
技术标签:
【中文标题】VC6中的多个模式对话框?【英文标题】:Multiple Modal Dialogs in 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 按钮实际上会关闭它所在的对话框,而不是打开第二个对话框。
【问题讨论】:
【参考方案1】:查看您的 resource.h 文件并确保没有将两个 ID 分配给同一个编号。您还应该检查以确保它们都不在保留范围内:MSDN TN020: ID Naming and Numbering Conventions
【讨论】:
啊,这就是问题所在!在规范更改之前,我使用按钮从发票中删除所有运输信息,所以当我开始处理新对话框时,我只是更改了 ID 和标题。从消息映射中删除 'ON_BN_CLICKED(IDC_BUTTON_CLEARSHIPPING, OnButtonClearshipping)' 解决了这个问题,但我也清理了我的 resource.h 文件。谢谢!以上是关于VC6中的多个模式对话框?的主要内容,如果未能解决你的问题,请参考以下文章
VC6.0中基于对话框的MFC EXE中的Tab Control控件如何使用???