DHTMLEdit определение положения курсора
От: Andrey01  
Дата: 22.03.03 03:53
Оценка:
Здравствуйте!

Подскажите пожалуйста:::

Делаю HTML редактор в D7, использую ActiveX компонент DHTMLEdit.
Через свои внутренние функции вставляются теги <FONT size, face...>

Вопрос:
1. Как добавить тег class="smth" к тексту? (чтобы было <FONT class="smth"></FONT>)

Если стандартных функций нет (я не нашёл) то
2. Как отследить положение курсора ? (т.е. знать где находишся в HTML-коде)

3. Где можно найти примеры работы с DHTMLEdit и D7 ?(их очень мало...) Есть ли справка(help) ?
4. Возможно есть ешё какие-то решения HTML-редактора (не DHTMLEdit)???

Заранее благодарен.
Re: DHTMLEdit определение положения курсора
От: kig Россия  
Дата: 24.03.03 08:03
Оценка:
Здравствуйте, Andrey01, Вы писали:

A>Здравствуйте!


A>Подскажите пожалуйста:::


A>4. Возможно есть ешё какие-то решения HTML-редактора (не DHTMLEdit)???


WebBrowser.

IHTMLDocument2::designMode Property

--------------------------------------------------------------------------------

Sets or retrieves a value that indicates whether the document can be edited.

Syntax

HRESULT IHTMLDocument2::get_designMode(BSTR* p);HRESULT IHTMLDocument2::put_designMode(BSTR v);
Parameters

p
Pointer to a variable of type BSTR that receives one of the values listed in Possible Values.
v
BSTR that specifies one of the values listed in Possible Values.
Possible Values

On Document can be edited.
Off | Inherit Default. Document cannot be edited.
Re: DHTMLEdit определение положения курсора
От: _DEBUG Беларусь  
Дата: 24.03.03 09:03
Оценка: 27 (3)
Здравствуйте, Andrey01, Вы писали:

A>Здравствуйте!


A>Подскажите пожалуйста:::


A>Делаю HTML редактор в D7, использую ActiveX компонент DHTMLEdit.

A>Через свои внутренние функции вставляются теги <FONT size, face...>

A>Вопрос:

A>1. Как добавить тег class="smth" к тексту? (чтобы было <FONT class="smth"></FONT>)
IHTMLElement4::getAttributeNode Method
HRESULT getAttributeNode(          BSTR bstrname,
    IHTMLDOMAttribute** ppAttribute
);


A>Если стандартных функций нет (я не нашёл) то

A>2. Как отследить положение курсора ? (т.е. знать где находишся в HTML-коде)
есть стандартные функции для работы с курсорами — это Introduction to Markup Services,IHTMLCaret,IDisplayPointer, IMarkupContainer2, IMarkupPointer2, IMarkupServices2, ISelectionServices, IHighlightRenderingServices. Вот — вроде все (может что-нибудь забыл — так дополните

A>3. Где можно найти примеры работы с DHTMLEdit и D7 ?(их очень мало...) Есть ли справка(help) ?


см Introduction to MSHTML Editing и на сайте МСДН (там есть примеры редактора)
A>4. Возможно есть ешё какие-то решения HTML-редактора (не DHTMLEdit)???

A>Заранее благодарен.
... << RSDN@Home 1.0 beta 6a >>
\n Give me MSDN and I'll show you the world
Re[2]: спасибо! - помогло
От: Andrey01  
Дата: 25.03.03 03:37
Оценка:
Re[2]: DHTMLEdit определение положения курсора
От: Аноним  
Дата: 15.02.05 17:44
Оценка:
Поднимаем тему.


A>>2. Как отследить положение курсора ? (т.е. знать где находишся в HTML-коде)

_DE>есть стандартные функции для работы с курсорами — это Introduction to Markup Services,IHTMLCaret,IDisplayPointer, IMarkupContainer2, IMarkupPointer2, IMarkupServices2, ISelectionServices, IHighlightRenderingServices. Вот — вроде все (может что-нибудь забыл — так дополните


Требуется вставлять ActiveX в редактируемый HTML-документ, причем вставлять по текущей позиции курсора. Понятно, что нужно пользоваться приведенными выше интерфейсами (в частности, IHTMLCaret), но не совсем понятны два момента:

1) Как и у кого этот интерфейс получить;
2) Что с ним собственно делать . Т.е. у этого интерфейса нужно получить какой-то текущий элемент, к которому можно ребенком прицепить тэг <object>. Но у интерфейса таких методов нету...
Re[3]: DHTMLEdit определение положения курсора
От: Аноним  
Дата: 16.02.05 05:45
Оценка:
IHTMLDocument -> IDisplayServices ->IHTMLCaret -> GetLocation -> IHTMLDocument::elementFromPoint


Здравствуйте, Аноним, Вы писали:

А>1) Как и у кого этот интерфейс получить;

А>2) Что с ним собственно делать . Т.е. у этого интерфейса нужно получить какой-то текущий элемент, к которому можно ребенком прицепить тэг <object>. Но у интерфейса таких методов нету...
Re[4]: DHTMLEdit определение положения курсора
От: Аноним  
Дата: 16.02.05 14:33
Оценка:
Здравствуйте, Аноним, Вы писали:

А>IHTMLDocument -> IDisplayServices ->IHTMLCaret -> GetLocation -> IHTMLDocument::elementFromPoint



Спасибо.

В целом, метод вполне рабочий. Было полезно с этим поковыряться. Тем не менее метод подошел не вполне: он позволяет найти текущий элемент HTML, но для вставки это не годится. Потому как нужно определить еще позицию курсора внути этого элемента.

В итоге было найдено такое простое решение:


        MSHTML::IHTMLSelectionObjectPtr spSelection = spHtmlDocument->Getselection();
        if(spSelection != NULL)
        {
            IDispatchPtr spDispatch = spSelection->createRange();
            if(spDispatch != NULL)
            {
                MSHTML::IHTMLTxtRangePtr spTxtRange = NULL;
                spDispatch->QueryInterface(IID_IHTMLTxtRange, (void **)&spTxtRange);

                spTxtRange->pasteHTML(L"<object></object>");
            }
        }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.