Использование Inernet Explorer Activex

  • Автор темы ivs4
  • Дата начала
Статус
Закрыто для дальнейших ответов.
I

ivs4

Гость
#1
Всем привет. Привел меня на форум следующий вопрос. Динамически в обрабочике С*Dialog::OnCreate создаю объект Internet Explorer
Код:
if(m_explorer.Create(NULL,dwStyle,CRect(10,120,210,250),this,ID_BROWSER_LOG)==0)
{
AfxMessageBox("Ошибка ActiveX Internet Explorer");
return -1;
}
m_explorer.Navigate("about:blank",NULL,NULL,NULL,NULL);
Затем мне надо установить цвет фона и текста на странице. Для этого я использую объекты IHTMLDocument2 и DispHTMLBody.
Код:
IHTMLDocument2 m_htmldoc(m_explorer.GetDocument());
while(m_htmldoc.GetReadyState()!="complete")
{
;
}
DispHTMLBody m_body=m_htmldoc.GetBody();
tagVARIANT varcolor;
varcolor.vt=VT_INT;
varcolor.intVal=0;
m_body.SetBgColor(varcolor);
varcolor.lVal=0x0000FF00;
m_body.SetText (varcolor);
Так вот загвоздка в том, что m_explorer я получаю, а при выполнении m_explorer.GetDocument() m_htmldoc в своей инициализации доходит только до состояния loading и не далее. Из-за этого дальнейшее получение m_body результата не даст.
Если кто-то встречался с данной ситуацией, то дайте совет
 
B

Barmutik

Гость
#2
И что пауза не помогает ? Просто возможно он ещё не успел снавигироваться на пустую страницу.. и поэтому и отдаёт пустой документ...
 
I

ivs4

Гость
#3
Спасибо, Гуру. Вопрос решен. Оказывается надо было дать лазейку для оконных сообщений при определении состояния IE. У меня получилось это следующим образом:
Код:
MSG message;
while(m_explorer.GetReadyState()!=4)
{
if(::PeekMessage (&message,NULL,0,0,PM_REMOVE))
{
::TranslateMessage (&message);
::DispatchMessage (&message);
}
}
А затем можно оаботать с приведенным мною выше кодом.
 
Статус
Закрыто для дальнейших ответов.