Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Повторное использование диалога


Автор: TerminalSoul 20.12.2009, 16:08
Вобщем создал класс диалога, нарисовал его в редакторе ресурсов, написал все обработчики и столкнулся с проблемой:
Этот диалог было бы круто использовать два раза, но в одном случае вызвать его с помощью DoModal(), а во втором зааттачить к вкладке. Но в редакторе ресурсов есть у окна свойство - контекстное меню, дочерний и смешанный. Если ставлю контекстное меню DoModal пашет, а вот когда он аттачится к вкладке , он к ней не присоединяется, а просто выскакивает как обычное модальное окно. Если ставлю дочерний - то с вкладкой всё норм, но при вызове DoModal() окна не видно как проблему решить?
Вот кода присоединения к вкладке диалога:
Код

    cur_tab->Create(id,(CWnd*)&Tabs);// диалог
    CRect rect;
    Tabs.GetWindowRect(&rect);//Tabs объект вкладки
    Tabs.ScreenToClient(&rect);
    Tabs.AdjustRect(FALSE,&rect);
    cur_tab->MoveWindow(&rect);
    cur_tab->ShowWindow(SW_SHOWNORMAL);
    cur_tab->UpdateWindow();

Автор: TerminalSoul 21.12.2009, 14:54
Забавн, сам задаю вопрос - сам отвечаю)
Вобщем, самый пока адекватный способ сделать так: скопировать в редакторе ресурсов диалоговое окно, и пусть одно будет дочернее, а другое контекстное. После чего, чтобы к нему не писать ещё один класс, просто подменять m_nIDHelp(ИД диалога), в зависимости от нужды.
В ещё проще, если юзать Create, там этот id задать можно напрямую, в примере кода выше так и делается, просто я долго тупил.

Автор: Earnest 21.12.2009, 20:11
Copy-Paste - это метод индийских программистов. А наши люди в булочную на такси не ездят.
Наши люди:
1) Прочитают шаблон диалога из ресурсов (DLGTEMPLATE) и поставят ему нужный стиль (чайлд или попап). И создадут его через CreateIndirect. И не надо бога ради, сводить меня с ума "смешанным" стилем или "контекстным меню"
2) Если нашим людям лень ковыряться в шаблоне, то они просто сделают диалог всегда дочерним, а в модальном варианте вложат его в другой модальный диалог, в котором ничего не будет, кроме этого чайлда.

Представь себе на минуту, что диалог нужно поменять, а у тебя 2 копии. А если таких диалогов несколько? Жуть!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)