| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Использование CDHtmlDialog |
| Автор: S.A.P. 18.10.2004, 09:54 |
| Недавно узнал о существовании класса CDHtmlDialog, и решил, что он как нельзя лучше подходит для интерфейса моей будущей программы Но вопрос вот в чем: можно ли (а если да, то как) програмно сгенерировать HTML текст (пусть он, скажем, будет храниться в CStringList), а потом привязать его к моему объекту класса CDHtmlDialog, вместо привязывания HTML из ресурса, что стоит по умолчанию? Но это еще не все |
| Автор: S.A.P. 18.10.2004, 21:17 |
| Ну че никто не знает что ли? Народ! Выручайте! |
| Автор: S.A.P. 1.11.2004, 22:45 |
| Ссори, подниму последний раз. А вдруг ответят |
| Автор: Step 2.11.2004, 11:41 | ||||
думаю можно. к сожелению сейчас нету МСДН под рукой... ищите....
я подозреваю что вам нужно просто обрабатывать вм_сомманд и там проверять мессаки от контролов, а вернее ид контрола и ид мессаги |
| Автор: S.A.P. 2.11.2004, 20:10 | ||
Есть MSDN. Там документ представляется в виде каких - то SAFEARRAY, а я что то разобраться не могу как они работают. |
| Автор: Coocky 2.11.2004, 22:14 |
| Через неделю будет топик.Жди |
| Автор: S.A.P. 2.11.2004, 22:52 |
| Coocky постарайся как можно быстрее. Буду очень благодарен |
| Автор: Coocky 2.11.2004, 22:56 | ||
Как в Академии учат,так и могу В чем ,конретно загвоздка? |
| Автор: S.A.P. 2.11.2004, 23:03 | ||
Суть загвоздки, собственно в вопросе. Буду дико благодарен за пример, который привязывает HTML текст из какого - нибудь контейнера типа CStringList к диалогу и обрабатывает событие от какого - нибудь элемента. |
| Автор: Coocky 2.11.2004, 23:16 | ||
Завтра прогу похожую скину.Может подойдет.Расмотришь через компилятор.Ок?Хотя мало че поймешью. Программированию под Инет посвящены книги. |
| Автор: Gorbatovsky 3.11.2004, 21:07 | ||
Я недавно использовал класс class CHtmlView
таким образом я пишу в файл содержимое страницы, а потом его читаю. Для обработки данных введеных пользователем тебе нужно парсить содержимое CHtmlView |
| Автор: S.A.P. 3.11.2004, 21:19 | ||
Ну это то понятно. Таким же макаром можно и с DHTMLDialog это провернуть: записать в файл, а потом привязать. Но мне не очень хочется, чтобы документ был доступен через HTM файл во время работы программы
вот это слово мне не очень нравится |
| Автор: Gorbatovsky 3.11.2004, 22:14 |
| Я ведь использовал CHtmlView, поэтому и ипользовал парсинг. В классе CDHtmlDialog, наверное, можно получать события и получить доступ к к элементам интерфейса странички. Год назад я на эту тему делал опрос (на этом форуме) , но никто не подсказал ничего кроме парсинга. Но время не стоит на месте. Меня эта тема тоже интересует. Очень интересная мысль в своих целях использовать CHtmlView и CDHtmlDialog. Открывается много возможностей... |
| Автор: S.A.P. 3.11.2004, 23:09 | ||
вот я тоже так подумал. Если использовать в своих программах гибкость DHTML (в качестве интерфейса), то программирование интерфейса перестает быть головной болью, как считалось раньше по отношению к VC++ . |
| Автор: Texel 3.12.2004, 11:08 |
| Люди, мне тоже очень интересна эта тема, за это время вы нашли её решение? |
| Автор: alien_by 3.12.2004, 12:45 | ||||
| Господа, есть в этом диалоге метод Navigate, позволяет переместится на любой урл!!!. Что касается связывания элементов диалога, для этого есть куча DDX-ов, которые можно использовать примерно так
Понятно, что данный способ, не очень удобен, так как нужно знать для каких элементов какие свойства модифицировать. Поэтому есть другой способ. В том-же классе, существует набор методов типа GetElementProperty/SetElementProperty и аналогичные им. Используя эти методы можно выполнять любой обмен данными. Что касается приёма сообщений от обьектов. Можно описать универсальную карту сообщений. Существует всего 5 различных типов сообщений от документа DHTML_EVENT(dispid, elemName, memberFxn) Если параметр elemName установлен в NULL, то обработчик будет реагировать на любое сообщение данного типа/подтипа приходящее от документа. DHTML_EVENT_CLASS(dispid, elemName, memberFxn) Параметр elemName задаёт CSS класс к которому отностися элемент (т.е. тоже группирует элементы) DHTML_EVENT_TAG(dispid, elemName, memberFxn) Соответственно группирует элементы по тэгу DHTML_EVENT_ELEMENT(dispid, elemName, memberFxn) выбирает элемент по идентификатору DHTML_EVENT_AXCONTROL(dispid, controlName, memberFxn) то-же что и DHTML_EVENT_ELEMENT но для Active-X контролов У них имеются подтипы.. Подтип задаётся параметром dispid. Приведу пример.
Это один из способов придания динамики с помощью стандартных инструментов. Есть ещё одна возможность, но здесь нужно провести некоторые исследования, на них у меня к сожалению, нет времени. Вообщем идея в следующем, любой обмен данными или сообщениями осуществляется через некий недокументированный механизм базирующийся на наборе классов основанных на CDHtmlSinkHandler и IDispatch. Ежели у кого руки дойдут до него, поделитесь плз. |
| Автор: Texel 4.12.2004, 17:52 |
| У меня тут вопросы возникли относительно класса CMyDHtmlDlg. Кто-нибудь занет как его прикрутить к MFC SDI приложению? с использованием разделения окна сплитами? Например в одном окне TreeView а вдругом CMyDHtmlDlg. А то я начал роазбираться производные от сласса CDialog не "вставляются" в SDI. Там есть только классы FormView и HtmlView(этот не подходит). Или подскажите как это организовать на ATL, если такое возможно... |