Как сделать WTL диалог из DLGTEMPLATE
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 12.10.05 21:50
Оценка:
Здравствуйте, уважаемые коллеги!

Вопрос такой. В WTL есть классы для работы с диалогами. Но они все используют шаблоны диалогов из ресурсов приложения, кто-то из них (не помню точно) содержит в себе паблик переменную IDD, которая должна быть равна идентификатору диалога. А мне хочется создавать диалоги из шаблонов DLGTEMPLATE(EX), они у меня генерятся на лету, стандартные ресурсы я не использую. Простого решения проблемы пока не увидел ;-( Может кто-нибудь что-нибудь подскажет хорошее, или кто-то может решал/видел такие решения?
Маньяк Робокряк колесит по городу
Re: Как сделать WTL диалог из DLGTEMPLATE
От: SaloS http://salos.narod.ru/
Дата: 13.10.05 05:10
Оценка: 2 (1)
Здравствуйте, Marty, Вы писали:

M>Здравствуйте, уважаемые коллеги!


M>Вопрос такой. В WTL есть классы для работы с диалогами. Но они все используют шаблоны диалогов из ресурсов приложения, кто-то из них (не помню точно) содержит в себе паблик переменную IDD, которая должна быть равна идентификатору диалога. А мне хочется создавать диалоги из шаблонов DLGTEMPLATE(EX), они у меня генерятся на лету, стандартные ресурсы я не использую. Простого решения проблемы пока не увидел ;-( Может кто-нибудь что-нибудь подскажет хорошее, или кто-то может решал/видел такие решения?


А кто тебе мешает написать что-нибудь вроде такого класса

template <class T, class TBase  = CWindow >
class ATL_NO_VTABLE CDialogImplEx : public CDialogImpl<T, TBase>
{
public:
    INT_PTR DoModalIndirect(LPCDLGTEMPLATE pDialogTemplate, HWND hWndParent = ::GetActiveWindow(), LPARAM dwInitParam = NULL)
    {
        ATLASSERT(m_hWnd == NULL);
        _AtlWinModule.AddCreateWndData(&m_thunk.cd, (CDialogImplBaseT< TBase >*)this);
#ifdef _DEBUG
        m_bModal = true;
#endif //_DEBUG
        return ::DialogBoxIndirectParam(_AtlBaseModule.GetResourceInstance(), pDialogTemplate,
            hWndParent, T::StartDialogProc, dwInitParam);
    }
};
WTL Helper и WTL Wizards помощники для WTL, скачать отсюда http://salos.narod.ru
Re[2]: Как сделать WTL диалог из DLGTEMPLATE
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 14.10.05 08:16
Оценка:
Здравствуйте, SaloS, Вы писали:


M>>Вопрос такой. В WTL есть классы для работы с диалогами. Но они все используют шаблоны диалогов из ресурсов приложения, кто-то из них (не помню точно) содержит в себе паблик переменную IDD, которая должна быть равна идентификатору диалога. А мне хочется создавать диалоги из шаблонов DLGTEMPLATE(EX), они у меня генерятся на лету, стандартные ресурсы я не использую. Простого решения проблемы пока не увидел ;-( Может кто-нибудь что-нибудь подскажет хорошее, или кто-то может решал/видел такие решения?


SS>А кто тебе мешает написать что-нибудь вроде такого класса


SS>
SS>template <class T, class TBase  = CWindow >
SS>class ATL_NO_VTABLE CDialogImplEx : public CDialogImpl<T, TBase>
SS>{
SS>public:
SS>    INT_PTR DoModalIndirect(LPCDLGTEMPLATE pDialogTemplate, HWND hWndParent = ::GetActiveWindow(), LPARAM dwInitParam = NULL)
SS>    {
SS>        ATLASSERT(m_hWnd == NULL);
SS>        _AtlWinModule.AddCreateWndData(&m_thunk.cd, (CDialogImplBaseT< TBase >*)this);
SS>#ifdef _DEBUG
SS>        m_bModal = true;
SS>#endif //_DEBUG
SS>        return ::DialogBoxIndirectParam(_AtlBaseModule.GetResourceInstance(), pDialogTemplate,
SS>            hWndParent, T::StartDialogProc, dwInitParam);
SS>    }
SS>};
SS>


В принципе ничего, просто я не слишком силен в устройстве WTL, и предполагал, что надо еще чего-то переписать, что так просто отделаться не удастся
Маньяк Робокряк колесит по городу
Re: Как сделать WTL диалог из DLGTEMPLATE
От: DmitryM Россия  
Дата: 17.10.05 00:57
Оценка:
Здравствуйте

Может быть это подойдет

http://www.codeproject.com/wtl/resourcelessdialogtoolkit.asp

How to create a resourceless dialog in wtl using the Resourceless Dialog
... << RSDN@Home 1.2.0 alpha rev. 618>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.