Несколько модальных диалогов в VC6? - PullRequest
0 голосов
/ 23 декабря 2011

Я работаю над приложением, которое позволяет пользователям редактировать счета-фактуры, созданные в других частях приложения. При просмотре счета, если выбран Правка> Редактировать счет , запускается модальное диалоговое окно

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

Это отлично работает. Однако из-за недавнего изменения спецификации мне нужно извлечь поля, относящиеся к информации о доставке, и сделать их редактируемыми в отдельном диалоговом окне, доступном, нажав кнопку Изменить доставку , содержащуюся в первом диалоговом окне. *

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 голосов
/ 23 декабря 2011

Загляните в ваш файл resource.h и убедитесь, что не существует двух идентификаторов, назначенных одному и тому же номеру. Вы также должны убедиться, что ни один из них не находится в зарезервированных диапазонах: MSDN TN020: Соглашения об именовании и нумерации ID

...