Здравствуйте, 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, и предполагал, что надо еще чего-то переписать, что так просто отделаться не удастся