Модуль VB в программе на VC++
Проблема в том, что работать с объектами COM в C++ я совершенно не умею. Справка загоняет в тоску размерами статей и ссылками на документацию PowerPoint'a, которая вся написана для Visual Basic'a. А вот его-то я знаю неплохо, посему - следующая идея: написать на Basic'e всё, что необходимо сделать с PowerPoint'ом, в виде отдельного модуля, перегнать информацию в совместимые форматы - то есть реализовать на Visual Basic'е процедуру, которую можно будет вызвать из текста на C++ и получить у неё всё необходимое.
Добавил Basic к Visual Studio 2008, открыл и ... растерялся: куча всяких Add-in'ов к Word'у, Excel'ю и прочая, а из знакомого мне - только предложение сваять dll на Net Framework 3.5. А что, просто модуль добавить, чтобы объектный файл скомпилить и его к проекту подключить - разве нельзя?
Хотя, возможно, и нельзя - но хочется знать точно.
CLSID clsid;
CLSIDFromString(L"PowerPoint.Application", &clsid); - получаем гуид.
IDispatch *pObjApp = NULL;
CoCreateInstance(clsid, NULL, CLSCTX_ALL, IID_IDispatch, (LPVOID*)&pObjApp);
Далее используя метод Invoke (в IDispatch) работаем также как и в VB.
Для удобсва исп. GetIDsOfNames - получ. индеф. номера функции по ее имени.
Но лучше пойти другим путем: использовать интерфейс IStorage, а описание структур потоков можно найти у майкрософта.