powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / CHTMLView можно ли программно управлять объектом документа?
3 сообщений из 3, страница 1 из 1
CHTMLView можно ли программно управлять объектом документа?
    #32275280
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну т.е. отображается допустим во View некая страница, содержащая radiobutton, checkbox и т.д. Как можно по щелчку на сабмите получить состояния всех этих прибамбасов? Спасибо.
...
Рейтинг: 0 / 0
CHTMLView можно ли программно управлять объектом документа?
    #32277201
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут два вопроса:
1) можно ли поймать щелчок на сабмите
и
2) можно ли определить состояние органов управления.

Берусь ответить на второй вопрос утвердительно.
СОМ терпеть не могу и знаю плохо, поэтому текст наверняка написан по-ламерски. Но с отладчиком проходил, работает.

Я написал такой html-файлик:

Код: plaintext
1.
2.
3.
4.
5.
6.
<HTML>
<SELECT SIZE= "3 ">
<option value= "1 "> 11111111 </option>
<option value= "2 "> 22222222 </option>
</SELECT>
</HTML>


и открыл в mfcie (sample из C++), а в обработчике Stop написал такое:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
HRESULT h = S_OK;
LPDISPATCH pD = GetHtmlDocument();
IHTMLDocument2* pHD2 = NULL;
h = pD->QueryInterface(IID_IHTMLDocument2,(void**)&pHD2);

IHTMLElementCollection* pHD2All = NULL;
h = pHD2->get_all(&pHD2All);
IDispatch* pA = NULL;
long nAll =  0 ;
h = pHD2All->get_length(&nAll);

IHTMLElementCollection *pSelects = NULL;
COleVariant vS( "SELECT" ),vO( "OPTION" ),vn0((long) 0 ,VT_I4),vn1((long) 1 ,VT_I4);
long nS =  0 ,nO =  0 ;
h = pHD2All->tags(vS,(IDispatch**)&pSelects);
h = pSelects->get_length(&nS);

IDispatch *pSelect2 = NULL;
h = pSelects->item(vn0,vn0,&pSelect2);
IHTMLElement *pSelect = NULL;
h = pSelect2->QueryInterface(IID_IHTMLElement,(void**)&pSelect);

IHTMLElementCollection *pOptions = NULL;
h = pSelect->get_all((IDispatch**)&pOptions);
h = pOptions->get_length(&nAll);

IDispatch *pOption2 = NULL;
h = pOptions->item(vn0,vn0,&pOption2);
IHTMLElement *pOption = NULL;
h = pOption2->QueryInterface(IID_IHTMLElement,(void**)&pOption);

COleVariant vSelected((long) 0 ,VT_I4);
CComBSTR vSELECTED( "SELECTED" );
pOption->getAttribute(vSELECTED, 0 ,vSelected);

h = pOptions->item(vn1,vn1,&pOption2);
h = pOption2->QueryInterface(IID_IHTMLElement,(void**)&pOption);
pOption->getAttribute(vSELECTED, 0 ,vSelected);


В общем, примерно понятно, что делается: получаем документ, список всех его тэгов, потом только SELECT'ов, берём первый из них. В нём перебираем OPTION'ы и у каждого из нх смотрим значение атрибута SELECTED (переменная vSelected).


На второй вопрос отвечу, когда будет очередной приступ мазохизма :)
...
Рейтинг: 0 / 0
CHTMLView можно ли программно управлять объектом документа?
    #32277783
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. То, что нужно.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / CHTMLView можно ли программно управлять объектом документа?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]