Здравствуйте, 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 — своя функция, которая, собственно, описывает логику поиска сначала ресурсов на русском, например, а затем и на английском.