Здравствуйте VladD2, Вы писали:
G>>1. Про какие С-типы данных в АТЛ стоит забыть ?
VD>В смысле чтобы с _ATL_MIN_CRT компилировалось?
VD>Если да, то в про все CRT-ешные (C Run-Time библиотечные) функции и типы. Т.е. вместо strlen -> lstrlen, вместо fopen -> CreateFile...
Владислав, спасибо большое за предыдущий ответ, можно Вас еще поспрашивать?
Если можно на примере:
Допустим у меня есть такой метод
[id(3), helpstring("returns some string")]
HRESULT GetStringValue
(BSTR SomeString, [out, retval] BSTR stringValue);
(кстати, VB захотелось именно BSTR, это нормально?)
Я хочу в этом методе вернуть переданную мне в первом аргументе строку + "еще что-то". Если бы это был простой char* и char** тип, я бы сделал примерно так:
...
GetStringValue("Some string",&stringValue);
//stringValue="Some string and anoter string"
...
void GetStringValue(char* SomeString, char** stringValue)
{
char appendix[]=" and anoter string";
int result_len=strlen(appendix);
result_len+=strlen(SomeString);
result_len++;
*stringValue=(char*)malloc(result_len);
memset(*stringValue,0,result_len);
strcat(*stringValue,SomeString);
strcat(*stringValue,appendix);
return;
}
А вот с BSTR я никак не пойму что делать
Парился с преобразованием типов и так и этак, то не компилируется, то потом черти что выводит. Владислав, если не трудно, не могли бы Вы подсказать как приведенный выше код на АТЛ выглядит. Я вот тут место даже приготовил
STDMETHODIMP CSomeClass::GetStringValue(BSTR SomeString, BSTR *stringValue)
{
}
Вообще, когда речь идет о методах, возвращающих значения, и свойствах (get_) то указатель на что им передается в качестве аргумента? На пустое место?
Со свойствами (там где строки) SysAllocString() и SysReAllocString это стандартная техника?
VD>Лучше просто читать MSDN. Там все есть.
Я ждал и боялся этого ответа
Ну, читать так читать