Re[2]: MFC: есть проблема с диалогом (DoModal)
От: Аноним  
Дата: 09.12.04 09:10
Оценка:
Здравствуйте, Alecard, Вы писали:

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


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

A>    return CDialog::DoModal();
A>}
A>


К сожалению, InitModalIndirect() отказывается создавать модальный диалог на основе указанного шаблона. Порывшись в Google, я обнаружил такое решение: подменить всю функцию DoModal(). См. http://www.developpez.net/forums/viewtopic.php?p=768010.
Единственное, что я поменял — вместо:

hInst = AfxFindResourceHandle(m_lpszTemplateName, RT_DIALOG);
HRSRC hResource = ::FindResource(hInst, m_lpszTemplateName, RT_DIALOG);
hDialogTemplate = LoadResource(hInst, hResource);


поставил:

hInst = AfxFindResourceHandle(MAKEINTRESOURCE(IDD_MYDIALOG), RT_DIALOG);
HRSRC hResource = FindResourceEx(hInst, RT_DIALOG, MAKEINTRESOURCE(IDD_MYDIALOG), 
    MAKELANGID(LANG_RUSSIAN, SUBLANG_DEFAULT));
hDialogTemplate = LoadResource(hInst, hResource);


И вроде бы работает...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.