· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› COM

Посл.отвђт Сообщенiе


Дата: Май 26, 2004 19:15:10

Мужики.Кто еще в состоянии подскажите.Искал по всему форуму ответ на вопрос,который меня мучает уже который день.Ничего путного не нашел.Такое впечатление,что никто не пытается писать Com-ы на асме.А вот у меня зуд в одном месте.Желаю написать регистрируемую библиотеку,аля-MyCom2 от товарища Ernest J Murphy.Но,к сожалению,упираюсь в проблему - он приводит в примере udl-файл,в котором все GUID-ы с одним значением,такой udl MIDL компилировать не желает (ему видите ли не нравится,что GUID один и тот же).Во вторых объект и класс он обозвал одинаково,в результате код asm-а стал нечитаемым (в смысле не понятно где указание на объект,а где на класс объекта).Если кто силен в этом плане,разъясните страждущему.Спасибо.


Дата: Май 26, 2004 19:26:18

он приводит в примере udl-файл,в котором все GUID-ы с одним значением

А что тебе мешает самому сгенерить GUID'ы и запихать их в тот файл? uuidgen в помощь.


Дата: Май 26, 2004 22:13:32 · Поправил: Quantum

irrona
Создаю в вижуале новый project ATL COM AppWizard, подсовываю ему IDL из примера MyCom2 by Ernie, компилю и получаю TLB! Никаких конфликтов с GUID'ами.


Дата: Май 27, 2004 11:01:45

хорошо. вот пример из MyCom:
sIID_IMyCom TEXTEQU <{0A21A8C41H,01266H,011D4H,{0A3H,024H,000H,040H,0F6H,0D4H,087H,0D9H}}>
sLIBID_MyComLib TEXTEQU <{0A21A8C43H,01266H,011D4H,{0A3H,024H,000H,040H,0F6H,0D4H,087H,0D9H}}>
sCLSID_MyCom TEXTEQU <{0A21A8C42H,01266H,011D4H,{0A3H,024H,000H,040H,0F6H,0D4H,087H,0D9H}}>

как мы видим GUID везде одинаковый.меня же интересует какой из данных GUID-ов к какой секции idl-файла относится.


Дата: Май 28, 2004 02:36:56

irrona
Не одинаковые они!!!


Дата: Май 28, 2004 19:06:52

Да с этим я уже разобрался. Спасибо всем.
Теперь другой вопрос. Метод класса должен принимать
строку в качестве параметра и возвращать строку.
Какой тип данных мне использовать, если параметры
метода,описанные в asm имеют тип DWORD? Пробовал тип
char - не помогает.


Дата: Май 28, 2004 19:13:10

Из всех тут тебе отвечал только квант. :)
А что такое "поинтер", ты слышал? А в DWORD как раз void * и влазит. И если ты аллоцируешь внутри этого самого твоего метода класса память, то можешь спокойно возвращать void *. Потом перекастуешь.


Дата: Май 31, 2004 18:34:52

volodya

Обошелся без void.Использовал тип BSTR (хотя,в
принципе, и LPTSTR нормально работает) с указателем.


Дата: Май 31, 2004 18:37:52 · Поправил: volodya

Все эти BSTR и LPTSTR (напридумывали, уроды), в конечном итоге, если не ошибаюсь, к wchar_t* сползают. Т.е. имеем тот же void* :)


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.073