Текущий архив: 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.46 MB
Время: 0.019 c