Здравствуйте, Denwer, Вы писали 2.5 года тому назад:
D>Просматривая исходники MFC заметил следующее:
D> return S_OK == spDoc->put_designMode(L"On") ? TRUE : FALSE; // вот тут собака порылась
D>Это определение:
D>virtual HRESULT STDMETHODCALLTYPE put_designMode (BSTR v) = 0
D>Разве можно передавать L"text" там где BSTR? Ведь для передачи BSTR в начале стоит счетчик, а в примере передается обычная строка(обячная 2-х байтная конечно) БЕЗ счетчика. Ну не может же тут вызываться что то скрытно, какое нибудь преобразование?
Если Вы посмотрите на то, как реализованы строки BSTR в C++, то увидите, что они представляют собой 4-х байтные указатели на строки 2-х байтных символов, завершающиеся 0x0000. В C++ НИКАКИХ счетчиков нет. Насколько я понимаю, они могут подсчитываться и передаваться при маршалинге. Поэтому ничего удивительного в тексте MFC нет.
Ответ, конечно, запоздалый, но мне Ваше письмо попалось на глаза только сейчас.
GREK