Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

CppWebBrowser - копирование контента

2.1K
03 августа 2009 года
foxby
44 / / 16.07.2003
Windows XP SP3
Borland C++ Builder 6.0

В форме используется контрол ТCppWebBrowser (все установки контрола по умолчанию).
Как скопировать в буфер обмена выделенную мышью часть текста загруженной в этот контрол web-страницы?

Спасибо.
11
03 августа 2009 года
oxotnik333
2.9K / / 03.08.2007
Код:
#include <atl\atlvcl.h>

CComPtr<IOleCommandTarget>m_spOleCmdTarg;
 CComPtr<IHTMLSelectionObject>spSelObj;
 CComPtr<IHTMLTxtRange>spTxtRng;
 CComPtr<IHTMLDocument2>spDoc;
 WB->Document->QueryInterface(IID_IHTMLDocument2, (LPVOID*)&spDoc);
 spDoc->get_selection(&spSelObj);
 HRESULT hr;
 hr = spSelObj->createRange((IDispatch**)&spTxtRng);
 if (!SUCCEEDED(hr)) return;
 spTxtRng->QueryInterface(IID_IOleCommandTarget, (LPVOID*)&m_spOleCmdTarg);
 m_spOleCmdTarg->Exec(&CGID_MSHTML, OLECMDID_COPY, Shdocvw_tlb::OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);
2.1K
03 августа 2009 года
foxby
44 / / 16.07.2003
oxotnik333,
спасибо за наводку, но вот только мне не понятно, каким образом нужно использовать данный код? Его нужно прикручивать к какому-то событию?
Может у вас есть ссылочка на какой-нибудь исходник-пример?

И еще странности...
Как только я добавляю в свой код #include <atl\atlvcl.h>, то сразу же компилятор начинает ругаться на неверное приведение типов, например на строку

AnsiString sCurVerInt;
AnsiString sCurVer;
sCurVerInt = StrToInt( AnsiReplaceStr( sCurVer, ".", "" ));

пишет, что мол "type mismatch in parameter "IpSrc" (wanted const char*, got 'AnsiString)"
11
03 августа 2009 года
oxotnik333
2.9K / / 03.08.2007
Цитата: foxby
oxotnik333,
спасибо за наводку, но вот только мне не понятно, каким образом нужно использовать данный код? Его нужно прикручивать к какому-то событию?
Может у вас есть ссылочка на какой-нибудь исходник-пример?


а в какой момент тебе надо копировать? (туда и прикручивай)

Цитата: foxby

И еще странности...
Как только я добавляю в свой код #include <atl\atlvcl.h>, то сразу же компилятор начинает ругаться на неверное приведение типов, например на строку

AnsiString sCurVerInt;
AnsiString sCurVer;
sCurVerInt = StrToInt( AnsiReplaceStr( sCurVer, ".", "" ));

пишет, что мол "type mismatch in parameter "IpSrc" (wanted const char*, got 'AnsiString)"



 
Код:
sCurVerInt = StrToInt( AnsiReplaceStr( sCurVer, ".", "" ).c_str());
2.1K
03 августа 2009 года
foxby
44 / / 16.07.2003
oxotnik333,
еще раз спасибо, особенно за то, что про ATL мне напомнил... поизучаю, т.к. вижу мне это понадобится для другой цели.

А для меня решение еще проще оказалось (приятель где-то в инете нашел).
В исходном коде формы, в которой используется CppWebBrowser, понадобилось всего лишь переинициализировать OLE, вот таким образом:

__fastcall TMainForm::TMainForm(TComponent* Owner) : TForm(Owner)
{[INDENT][COLOR=Blue] ::OleInitialize(NULL);[/COLOR]
[COLOR=Blue] ::OleUninitialize;[/COLOR]
[/INDENT]}

Теперь работает контекстное меню браузера в полном объеме, включая копирование контекста в буфер обмена.
Возможно еще кому-то пригодится.
11
03 августа 2009 года
oxotnik333
2.9K / / 03.08.2007
ну так бы сразу и сказал, что через контекстное меню самого браузера надо...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог