Настройкой Internet Explorer, который хостится ATL контролом
От: barguzin  
Дата: 10.03.06 17:58
Оценка:
Привет
Есть ATL контрол хостящий Internet Explorer. Проблема в указании для объекта экземпляра IE собственных
настроек. Но не хотелось бы писать в глобальные настройки, хранящиеся в HKCU\Software\Microsoft\Internet Explorer.

1. Нужно указать цвет фона, размер шрифта, стиль CSS и т.д. по умолчанию. Для этого используется
IDocHostUIHandler::GetOptionKeyPath, указывающая IE ветку реестра с настройками:
STDMETHODIMP rbDHTMLBridge::GetOptionKeyPath(BSTR __RPC_FAR *pbstrKey, DWORD dw)
{
MessageBox(NULL,"GetOptionKeyPath", "GetOptionKeyPath", MB_OK);
static LPCWSTR lpwszKey = L"Software\\MyApp";
if ((*pbstrKey = (LPOLESTR)CoTaskMemAlloc((wcslen(lpwszKey) + 1) * sizeof(OLECHAR))) != NULL) {
wcscpy(*pbstrKey, lpwszKey);
} else {
return E_INVALIDARG;
}
return S_OK;
}
Проверено, что функция вызывается IE и возвращает S_OK. Но IE все равно используется глобальные
настройки. Как с этим бороться? Может, нужна какая-то дополнительная инициализация?

2. Нужно убрать колонтитулы со страниц, печатаемых контролом. Я знаю, что GetOptionKeyPath в этом не
поможет, т.к. IE будет все равно брать дефолтные настройки для верхнего и нижнего колонтитулов.
Я использую WebBrowser.ExecWB(OLECMDID_PRINT, ...) как сказано в статье
How to print custom headers and footers for a WebBrowser control in Internet Explorer,
полностью скопировал код оттуда. Но при печати все рано используются глобальные настройки,
хотя ExecWB якобы исполняется успешно. Что можно сделать? Может дело в том, что наивысшая версия IE,
которая есть в разделе статьи APPLIES TO — это 5.0, а я использую 6.0?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.