K>#include"msxml2.h"
[/code]
Зачем это при наличии #import?
[code]
K>#import"msxml4.dll"
K>using namespace MSXML2;
K>#include"initguid.h"
[/code]
Этот инклюд ставят перед #include <msxml2.h>. Тут он уже абсолютно бесполезен.
[code]
K>int main(int argc, char* argv[])
K>{
K> CoInitialize( NULL );
K> IClassFactory* pCF;
K> char szProgID[128] = "Msxml2.DOMDocument.4.0";
K> WCHAR szWideProgID[128];
K> CLSID clsid;
K> long lLen = MultiByteToWideChar( CP_ACP, 0, szProgID, strlen(szProgID), szWideProgID, sizeof(szWideProgID));
K> HRESULT hr = CLSIDFromProgID(szWideProgID, &clsid);
Зачем такой мазохизм? Почему не:
[code]
WCHAR szWideProgID=L"Msxml2.DOMDocument.4.0";
[/ccode]
K>вот тут clsid = 0 i hr = -214BLAH..
RTFM по MultiByteToWideChar. При твоих параметрах она не нуль-терминирует выходную строку.
K>а MS XML parser 4 с таким progid как я указал в программе проинстален. K>Чё делать ?
Ошибки править. Хотя я вообще не понимаю, зачем тебе понадобился ProgID? Чем известный CLSID не угодил?
Здравствуйте Lexey, Вы писали:
L>Здравствуйте Kreont, Вы писали:
L>Мда, изврат какой-то жуткий.
L>
K>>#include"msxml2.h"
L>[/code]
L>Зачем это при наличии #import?
L>[code]
K>>#import"msxml4.dll"
K>>using namespace MSXML2;
K>>#include"initguid.h"
L>[/code]
L>Этот инклюд ставят перед #include <msxml2.h>. Тут он уже абсолютно бесполезен.
L>[code]
K>>int main(int argc, char* argv[])
K>>{
K>> CoInitialize( NULL );
K>> IClassFactory* pCF;
K>> char szProgID[128] = "Msxml2.DOMDocument.4.0";
K>> WCHAR szWideProgID[128];
K>> CLSID clsid;
K>> long lLen = MultiByteToWideChar( CP_ACP, 0, szProgID, strlen(szProgID), szWideProgID, sizeof(szWideProgID));
K>> HRESULT hr = CLSIDFromProgID(szWideProgID, &clsid);
L>
L>Зачем такой мазохизм? Почему не: L>[code] L>WCHAR szWideProgID=L"Msxml2.DOMDocument.4.0"; L>[/ccode]
K>>вот тут clsid = 0 i hr = -214BLAH..
L>RTFM по MultiByteToWideChar. При твоих параметрах она не нуль-терминирует выходную строку.
K>>а MS XML parser 4 с таким progid как я указал в программе проинстален. K>>Чё делать ?
L>Ошибки править. Хотя я вообще не понимаю, зачем тебе понадобился ProgID? Чем известный CLSID не угодил?
потому что CLSID_DOMDocument40 — unknown identifier
L>>Ошибки править. Хотя я вообще не понимаю, зачем тебе понадобился ProgID? Чем известный CLSID не угодил? K>потому что CLSID_DOMDocument40 — unknown identifier
Так и должно быть. Если #import без named_guids.
Чего сделать-то хочешь? Если объект создать, то это делается в три строки:
L>>>Ошибки править. Хотя я вообще не понимаю, зачем тебе понадобился ProgID? Чем известный CLSID не угодил? K>>потому что CLSID_DOMDocument40 — unknown identifier
GS>Так и должно быть. Если #import без named_guids.
GS>Чего сделать-то хочешь? Если объект создать, то это делается в три строки:
GS>
есть и примерчики про то как объекты создавать...
K>Я просто хочу с COM разобраться... накатать свой компонент в DLL и клиентской аппликахой позапускать его методу...для начала))
Настоятельно рекомендую для начала ATL на серверной стороне, VB/VBA/VBS на клиентской (добавляет еще одну точку зрения) и уж никак не ClassFactory и прочий низкоуровневый стафф. Все это не намного сложнее детского конструктора, и важно только ухватить генеральную идею. Заключающуюса, в частности, в том, что, чтобы лезть в потроха, стоит иметь причину, обычно все работает и так.
2All: А есть какой-нибудь стандартный текст про то, как лепить серверов на ATL и работать с ними из VC и других языков? Без углубления в детали, но с упором на то, чего можно достигнуть простейшими средствами?
Здравствуйте George_Seryakov, Вы писали:
GS>Здравствуйте Kreont, Вы писали:
GS>>>Чего сделать-то хочешь? Если объект создать, то это делается в три строки: GS>... GS>>>А вот в http://www.rsdn.ru/article/?vcpp/import.xml
есть и примерчики про то как объекты создавать...
K>>Я просто хочу с COM разобраться... накатать свой компонент в DLL и клиентской аппликахой позапускать его методу...для начала))
GS>Настоятельно рекомендую для начала ATL на серверной стороне, VB/VBA/VBS на клиентской (добавляет еще одну точку зрения) и уж никак не ClassFactory и прочий низкоуровневый стафф. Все это не намного сложнее детского конструктора, и важно только ухватить генеральную идею. Заключающуюса, в частности, в том, что, чтобы лезть в потроха, стоит иметь причину, обычно все работает и так.
GS>2All: А есть какой-нибудь стандартный текст про то, как лепить серверов на ATL и работать с ними из VC и других языков? Без углубления в детали, но с упором на то, чего можно достигнуть простейшими средствами?
Здравствуйте Kreont, Вы писали:
GS>>2All: А есть какой-нибудь стандартный текст про то, как лепить серверов на ATL и работать с ними из VC и других языков? Без углубления в детали, но с упором на то, чего можно достигнуть простейшими средствами?
K>http://rsdn.ru/article/?com/introcom.xml#IDAI3M5K
Текст достаточно полный, то есть охватывает все, что нужно для начала. К сожалению, зачем-то разбираются детали реализации. Вот это имхо лишнее для первого изучения.
K>вот эту радость читаю.. скачал пример... версия VC не та (у меня 6) — не компилится.
Создай чего-нить ATL-визардом. Оно скомпилится.
K>Вот... а до этого я парсер xML использовал K>всё вроде заработало только как я не понял хочу разобраться как всё там в COM и почему...
Здравствуйте George_Seryakov, Вы писали:
GS>Здравствуйте Kreont, Вы писали:
GS>>>2All: А есть какой-нибудь стандартный текст про то, как лепить серверов на ATL и работать с ними из VC и других языков? Без углубления в детали, но с упором на то, чего можно достигнуть простейшими средствами?
K>>http://rsdn.ru/article/?com/introcom.xml#IDAI3M5K
GS>Текст достаточно полный, то есть охватывает все, что нужно для начала. К сожалению, зачем-то разбираются детали реализации. Вот это имхо лишнее для первого изучения.
K>>вот эту радость читаю.. скачал пример... версия VC не та (у меня 6) — не компилится.
GS>Создай чего-нить ATL-визардом. Оно скомпилится.
K>>Вот... а до этого я парсер xML использовал K>>всё вроде заработало только как я не понял хочу разобраться как всё там в COM и почему...
GS>
K>>и нафига надо..
GS>Чтоб не заморачиваться деталями реализации.
Но принцип работы всё равно надо понимать...
Вот я уже с этими dependencies замучался... хочу _com_error тип... где он объявлен ?
Здравствуйте Kreont, Вы писали:
GS>>Чтоб не заморачиваться деталями реализации.
K>Но принцип работы всё равно надо понимать...
Принцип простой: нажал на кнопочку, пусть электричество работает.
K>Вот я уже с этими dependencies замучался... хочу _com_error тип... где он объявлен ?
Это написано в 7-й строке статьи MSDN про _com_error. Крупными, жирными буквами.
Здравствуйте George_Seryakov, Вы писали:
GS>Настоятельно рекомендую для начала ATL на серверной стороне, VB/VBA/VBS на клиентской (добавляет еще одну точку зрения) и уж никак не ClassFactory и прочий низкоуровневый стафф. Все это не намного сложнее детского конструктора, и важно только ухватить генеральную идею. Заключающуюса, в частности, в том, что, чтобы лезть в потроха, стоит иметь причину, обычно все работает и так.
GS>2All: А есть какой-нибудь стандартный текст про то, как лепить серверов на ATL и работать с ними из VC и других языков? Без углубления в детали, но с упором на то, чего можно достигнуть простейшими средствами?
Нет. А есть желание его написать?
Здравствуйте retalik, Вы писали:
R>Здравствуйте George_Seryakov, Вы писали:
GS>>Настоятельно рекомендую для начала ATL на серверной стороне, VB/VBA/VBS на клиентской (добавляет еще одну точку зрения) и уж никак не ClassFactory и прочий низкоуровневый стафф. Все это не намного сложнее детского конструктора, и важно только ухватить генеральную идею. Заключающуюса, в частности, в том, что, чтобы лезть в потроха, стоит иметь причину, обычно все работает и так. R>
GS>>2All: А есть какой-нибудь стандартный текст про то, как лепить серверов на ATL и работать с ними из VC и других языков? Без углубления в детали, но с упором на то, чего можно достигнуть простейшими средствами?
R>Нет. А есть желание его написать?
В принципе можно. Что-то вроде "Руководство ленивого по использованию и написанию COM-серверов". Но такой текст точно отсутствует? И нужен?
GS
Re[8]: СОМ
От:
Аноним
Дата:
11.04.02 18:03
Оценка:
Здравствуйте George_Seryakov, Вы писали:
GS>Здравствуйте Kreont, Вы писали:
GS>Текст достаточно полный, то есть охватывает все, что нужно для начала. К сожалению, зачем-то разбираются детали реализации. Вот это имхо лишнее для первого изучения.
Ниче не лишнее. Есть просто такие люди, которые не могут работать нормально с вещью(на проффессиональном уровне) не понимая, как она устроена. Я сам такой, и думаю таких много. И про электричество не подходящий пример — мы не собираемся приборы делать.
COM я сам примерно так и изучал, только у меня хорошая книжка была. Как поймешь, как все это устроено на низком уровне, так и с оставшимся разобраться проще, да и вообще спокойнее себя чувствуешь.
Здравствуйте Аноним, Вы писали:
GS>>Текст достаточно полный, то есть охватывает все, что нужно для начала. К сожалению, зачем-то разбираются детали реализации. Вот это имхо лишнее для первого изучения.
А>Ниче не лишнее. Есть просто такие люди, которые не могут работать нормально с вещью(на проффессиональном уровне) не понимая, как она устроена. Я сам такой, и думаю таких много. И про электричество не подходящий пример — мы не собираемся приборы делать. А> COM я сам примерно так и изучал, только у меня хорошая книжка была. Как поймешь, как все это устроено на низком уровне, так и с оставшимся разобраться проще, да и вообще спокойнее себя чувствуешь.
Да я и не против понимания на уровне бинариков. Начинать надо с "Зачем?" (общая идея), потом идет "Как?" (бинарики) ну я потом уже "Что еще?"
Здравствуйте George_Seryakov, Вы писали:
GS>>>2All: А есть какой-нибудь стандартный текст про то, как лепить серверов на ATL и работать с ними из VC и других языков? Без углубления в детали, но с упором на то, чего можно достигнуть простейшими средствами? R>>Нет. А есть желание его написать? GS>В принципе можно. Что-то вроде "Руководство ленивого по использованию и написанию COM-серверов". Но такой текст точно отсутствует? И нужен?
Ну, в формате QnA точно не помешает (если судить по количеству задаваемых о CoCreateInstance вопросов).
Кроме статьи IT про #import, на русском языке, похоже, ничего нет.
Но желательно и предостеречь "особо ленивых" — например, рассказать о подлости _bstr_t при обработке больших строк
Кстати, говорят, в VC7 это дело поправлено — там alloca только для строк <64Kb вызывается, иначе — через хип.
Здравствуйте retalik, Вы писали:
GS>>>>2All: А есть какой-нибудь стандартный текст про то, как лепить серверов на ATL и работать с ними из VC и других языков? Без углубления в детали, но с упором на то, чего можно достигнуть простейшими средствами? R>>>Нет. А есть желание его написать? GS>>В принципе можно. Что-то вроде "Руководство ленивого по использованию и написанию COM-серверов". Но такой текст точно отсутствует? И нужен?
R>Ну, в формате QnA точно не помешает (если судить по количеству задаваемых о CoCreateInstance вопросов). R>Кроме статьи IT про #import, на русском языке, похоже, ничего нет.
Формата QnA я не знаю, могу попробовать написать в обычном жанре статьи, но структурированной таким образом, чтоб можно было тыкать пальцем в разделы в ответ на часто встречающиеся вопросы.
Здравствуйте George_Seryakov, Вы писали: GS>Формата QnA я не знаю, могу попробовать написать в обычном жанре статьи, но структурированной таким образом, чтоб можно было тыкать пальцем в разделы в ответ на часто встречающиеся вопросы.
Да в общем-то, на RSDN так сложилось, что QnA — это короткая статья, название которой начинается на "Как" или "Почему" GS>Кто заказчик? С кем план-проспект обсуждать?
The RSDN Group. Ты же вроде в ней состоишь?