Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.18;
Скачать: CL | DM;

Вниз

Помогите с визуальным обновлением :(   Найти похожие ветки 

 
DillerXX ©   (2006-05-23 12:47) [0]

Получаю от IHTMLDocument2 потомок body, с интерфейсом IHTMLElement. Вызываю Body->put_title и ничего не изменяется. Если вызвать get_title то там будет мой текст, но в браузере старый текст не заменится на новый! Почему так? Что мне предпринять? Заранее спасибо.

Написал код на Делфи - всё работает. Переписал на С++ - не работает. Спросил на RSDN - пока молчат :( Помогите пожалуйста, хоть это и С++


 
DillerXX ©   (2006-05-23 20:33) [1]

Я тут понял, пробелма не в обновлении интерфейсов... проблема в UNICODE. Если нечто вроде
BSTR bTitle = (BSTR)"hello";
дать скушать интерфейсу, то заголовок обновится и в нём появится билеберда (из 2х байтов делаем 1 символ :) что естественно предсказуемо. Заюзал следущую функцию:

wchar_t* ToBSTR(char* source)
{
DWORD size = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, source, -1, NULL, 0);
       
   wchar_t* dest = new wchar_t[size];
   MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, source, -1, dest, size);
   
   return dest;
}

Но опять не работает :( вызываю put_title - ноль реакции.. помогите пожалуйста, что же мне сделать то


 
API ©   (2006-05-23 21:42) [2]

Вы так много написали, но так и не уточнили, чего же вы хотите добиться.
<TITLE> - это атрибут <HEAD>, но разве у <BODY> есть такой атрибут?
То есть, я не понял, чего надо добиться в конечном результате?


 
DillerXX ©   (2006-05-23 22:03) [3]

C body это я ошибся... нужен только IHTMLDocument2. Тоесть сменить title у него с помощью метода put_title. Именно в С++ Studio, так как в Делфи всё работает прекрасно, ибо она сама юникод конвертит походу :( Помогите прошу кто-нибудь, попробуйте функцию ToBSTR поглядеть... почему её результат не принимает метод put_title?? В дебагере всё всё нормально, но не работает чтоб её =(


 
DillerXX ©   (2006-05-23 23:54) [4]

Помогите пожалуйста, иначе меня прибьют :(( Пишу код
void Proc(IHTMLDocument2* Doc)
{
char Title[] = "hehe";
//BSTR bTitle = (BSTR)"hehe";
BSTR bTitle = ToBSTR(Title);
bTitle = BSTR("hello");
Doc->put_title(bTitle);
}

И у меня не работает, ну не могу понять почему :( Ведь всё должно работать, помогите кто-нибдуь кто в С++ с COM работал :(


 
Владислав ©   (2006-05-24 09:52) [5]

Может в качестве примера пригодится:
__inline bool Connect(const TCHAR * Host, const long Port, const TCHAR * Login, const TCHAR * Password)
{
 CComBSTR str;
 m_Connected = false;
 m_Disconnected = false;
 str = Host;
 m_hr = m_Session->put_HostAddr(str.Detach());
 if (FAILED(m_hr))
  return false;
 m_hr = m_Session->put_HostPort(Port);
 if (FAILED(m_hr))
  return false;
 str = Login;
 m_hr = m_Session->put_Name(str.Detach());
 if (FAILED(m_hr))
  return false;
 str = Password;
 m_hr = m_Session->put_Password(str.Detach());
 if (FAILED(m_hr))
  return false;
 m_hr = m_Session->Connect();
 return (SUCCEEDED(m_hr));
};


 
Шмель ©   (2006-05-24 15:40) [6]

Чтобы передать BSTR строку нужно использовать ::SysAllocString(..) и дело здесь не в Unicode



Страницы: 1 вся ветка

Текущий архив: 2006.06.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.056 c
9-1130801569
Bogdan1024
2005-11-01 02:32
2006.06.18
Armed Man v1.06


6-1139739620
Alexandr
2006-02-12 13:20
2006.06.18
отправка HTML письма


4-1142851851
balepa
2006-03-20 13:50
2006.06.18
Socket and TIME_WAIT


2-1149108787
Nonamers
2006-06-01 00:53
2006.06.18
ShellExecute


15-1148538041
begin...end
2006-05-25 10:20
2006.06.18
Сотовый...