C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
CppWebBrowser и Enter, Enter не работает и копирование тоже
Пaxa
Отправлено: 15.04.2004, 12:59


Ученик-кочегар

Группа: Участник
Сообщений: 17



Привет всем!
Подскажите в чем дело... В CppWebBrowser Enter, копирование текста и ссылок не работает... Хотя "Alt+013" работает! smile.gif
Вставка, удаление из контекстного меню работает, а копирование, вырезка (ctrl+c, shift+ins, ctrl+x и т.д.) не работают.
Если кто знает в чем дело или сталкивался с этим подскажите плиз.

Заранее спасибо.
Pro
Отправлено: 16.04.2004, 00:24


Ученик-кочегар

Группа: Участник
Сообщений: 10



Сталкивался, данным кодам ты сможешь копировать

IHTMLDocument2 *document;

(void *)document=CppWebBrowser->Document;
bool blHtml;

IHTMLDocument2 *HTMLDocument = NULL;
LONG ilFramesCount = 0;
wchar_t* wcpSelectedText;
if(SUCCEEDED(CppWebBrowser->Document->QueryInterface(
IID_IHTMLDocument2, (LPVOID*)&HTMLDocument)))
{
IHTMLFramesCollection2 *pFrames = NULL;
if(SUCCEEDED(HTMLDocument->get_frames(&pFrames)))
{
pFrames->get_length(&ilFramesCount);
if(ilFramesCount == 0)
{
IHTMLSelectionObject* pSelection;
if(SUCCEEDED(HTMLDocument->get_selection(&pSelection)))
{
IHTMLTxtRange* pRange;
if(SUCCEEDED(pSelection->createRange((LPDISPATCH*)&(pRange))))
{
if(blHtml)
{
if(SUCCEEDED(pRange->get_htmlText(&wcpSelectedText)))
Clipboard()->SetTextBuf(AnsiString(wcpSelectedText).c_str());
}
else if(SUCCEEDED(pRange->get_text(&wcpSelectedText)))
Clipboard()->SetTextBuf(AnsiString(wcpSelectedText).c_str());
pRange->Release();
}
pSelection->Release();
}
}
else
{
VARIANT vFrame;
VARIANT ret;
vFrame.vt = VT_UINT;
for(LONG ilFrameIndex = 0; ilFrameIndex < ilFramesCount; ilFrameIndex++)
{
vFrame.lVal = ilFrameIndex;
if(SUCCEEDED(pFrames->item(&vFrame, &ret)))
{
IHTMLWindow2 *pWindow = NULL;
if(SUCCEEDED(ret.pdispVal->QueryInterface(IID_IHTMLWindow2,
(LPVOID*)&pWindow)))
{
IHTMLDocument2 *pDoc = NULL;
if(SUCCEEDED(pWindow->get_document(&pDoc)))
{
IHTMLSelectionObject* pSelection;
if(SUCCEEDED(pDoc->get_selection(&pSelection)))
{
IHTMLTxtRange* pRange;
if(SUCCEEDED(pSelection->createRange((LPDISPATCH*)&(pRange))))
{
if(blHtml)
{
if(SUCCEEDED(pRange->get_htmlText(&wcpSelectedText)) &&
AnsiString(wcpSelectedText).Trim() != EmptyStr)
Clipboard()->SetTextBuf(AnsiString(wcpSelectedText).c_str());
}
else if(SUCCEEDED(pRange->get_text(&wcpSelectedText)) &&
AnsiString(wcpSelectedText).Trim() != EmptyStr)
Clipboard()->SetTextBuf(AnsiString(wcpSelectedText).c_str());
pRange->Release();
}
pSelection->Release();
}
pDoc->Release();
}
pWindow->Release();
}
}
}
}
pFrames->Release();
}
HTMLDocument->Release();
}
Пaxa
Отправлено: 19.04.2004, 13:59


Ученик-кочегар

Группа: Участник
Сообщений: 17



2 Pro
Спасибо, а если не секрет, то куда это вставить? Перехватывать onKeyDown ?
И может знаешь как Enter активировать?
Pro
Отправлено: 20.04.2004, 01:01


Ученик-кочегар

Группа: Участник
Сообщений: 10



Da esli 4esna ne znaiu, panadabitsa uznaiu. Nu a kuda vstaviti, stavi kak pri najatia kakoiliba knopki.
Пaxa
Отправлено: 20.04.2004, 09:01


Ученик-кочегар

Группа: Участник
Сообщений: 17



2 Pro:
Ну кнопки, не самое лучшее... smile.gif Сделал своё popupmenu в нем сделал копировать, вставить, вырезать, удалить и т.д.
P.S. Может тебе уже надо? smile.gif

Уважаемые модераторы! Подскажите пожалуйста как в CppWebBrowser перехватить нажатие клавиши (сочетания клавиш), чтобы вызвать свой обработчик. Например: Enter, Ctrl+N, Ctrl+с и т.д.

Заранее благодарен за помощь.

Вернуться в Вопросы программирования в C++Builder