Главная страница
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.04 c
2-1148977859
alec_sey
2006-05-30 12:30
2006.06.18
Шифрование файлов


2-1149068744
volkodav
2006-05-31 13:45
2006.06.18
Проблема с функцией CopyFile


1-1147319024
dwar
2006-05-11 07:43
2006.06.18
Работа с XML через MSXML_TLB


1-1147103040
Андрей Молчанов
2006-05-08 19:44
2006.06.18
Управление тултипами TTreeView


2-1149168121
Revan
2006-06-01 17:22
2006.06.18
Listbox