Теперь настало время пояснить, что
//———————————————————————————————
void __fastcall TForm2::Button11Click(TObject *Sender)
{
if (VarType(Serv)==varDispatch) Serv=Unassigned;
}
//———————————————————————————————
void __fastcall TForm2::Button5Click(TObject *Sender)
{
if (VarType(Serv)==varDispatch)
{if (OpenDialog1->Execute())
Serv.OleProcedure(“OpenFile”,OpenDialog1->FileName);}
}
//———————————————————————————————
void __fastcall TForm2::Button6Click(TObject *Sender)
{
if (VarType(Serv)==varDispatch)
{ if (SaveDialog1->Execute())
Serv.OleProcedure(“SaveFile”,SaveDialog1->FileName);}
}
//———————————————————————————————
void __fastcall TForm2::Button7Click(TObject *Sender)
{
if (VarType(Serv)==varDispatch) Serv.OleProcedure(“NewFile”);
}
//———————————————————————————————
void __fastcall TForm2::Button4Click(TObject *Sender)
{
if (VarType(Serv)==varDispatch) Serv.OleProcedure(“AddLine”,Edit1->Text);
}
//———————————————————————————————
Некоторые комментарии
Теперь настало время пояснить, что именно делает приведенный выше код. Для управления сервером автоматизации мы создали переменную типа Variant (в C++Builder для этой цели имеется соответствующий класс) и вызвали функцию CreateOleObject, содержащуюся в модуле ComObj библиотеки VCL.
При выполнении функции CreateOleObject произойдет следующее. Эта функция, вызвав несколько функций Win32 API, создаст экземпляр COM-объекта IDispatch и вернет его внутри вариантной переменной. Этот объект, в свою очередь, содержит интерфейс объекта (в данном случае нашего сервера автоматизации), методы которого мы хотим вызывать из приложения. Если исследовать реализацию функции CreateOleObject в исходном тексте модуля ComObj, можно обнаружить, что она, в свою очередь, вызывает функцию Win32 API CoCreateInstance, являющуюся частью спецификации COM, назначение которой — создать объект из исполняемого файла или DLL. Переменная типа Variant может содержать разнообразные данные (строку, число и др., в том числе и интерфейс COM-объекта).
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий