Re: MFC: есть проблема с диалогом (DoModal)
От: Alecard Украина  
Дата: 01.11.04 10:16
Оценка:
Здравствуйте, Kooksha, Вы писали:

K>Для MFC версии есть проблема с диалоговым окном: DoModal не работает с CreateIndirect() Работает только с InitModalIndirect(), но этот метод не локализует ресурс. Как быть?


Очень просто. Для вашего класса диалога CMyDialog нужно вызывать пустой унаследованный конструктор CDialog(), например, вот так:

CMyDialog::CMyDialog(CWnd* pParent /*=NULL*/) : CDialog()
{
    m_pParentWnd = pParent;
    //{{AFX_DATA_INIT(CMyDialog)
        // NOTE: the ClassWizard will add member initialization here
    //}}AFX_DATA_INIT
}


Ссылку на родительское окно сохраняем в конструкторе, нам она понадобится в вызове метода InitModalIndirect. Ну, а теперь переопределяем метод DoModal, например, так:

int CMyDialog::DoModal() 
{
    if (!InitModalIndirect((LPDLGTEMPLATE)LoadResourceLang(RT_DIALOG, this->IDD), m_pParentWnd))
        return IDCANCEL;

    return CDialog::DoModal();
}


где LoadResourceLang — своя функция, которая, собственно, описывает логику поиска сначала ресурсов на русском, например, а затем и на английском.
Алексей Радиванюк
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.