Введение
Цель лабораторной работы состоит в том, чтобы дать основы создания COM сервер, используя библиотеку шаблонных классов, и затем вызвать сервер из программы на Visual C++. Программа разработана для показа создания объектов COM на базе библиотеки шаблонных классов.
Шаг 1: Создание COM сервера
- Выбрать ATL COM AppWizard и набрать имя проекта в Project. В данном случае оно будет HelloWorld
- Затем выбрать тип сервер в виде библиотеки динамической компоновки и нажать Finish.
- Нажать OK для генерауции файлов в Class Wizard.
- Перейти в ClassView, правый щелчок по HelloWorld classes и выбрать New ATL object.
- Затем выбрать Simple object.
- Набрать короткое имя компонента, в данном случае CGreet, мастер автоматически заполнит другие имена.
- Перейти к просмотру классов снова
- Правый щелчок по значку ICGreet и выбрать Add Method
- Набрать имя функции, как SayHello, и заполнить параметры, как [in] BSTR name, [out,retval] BSTR *retstr
- Перейти к FileView и набрать код ниже в CGreet.cpp. Построить проект, и сервер готов
// CCGreet
STDMETHODIMP CCGreet::SayHello(BSTR name, BSTR *retstr)
{
char str[20] ;
sprintf(str,”hello “);
// Copy the value of hello into the string variable
// Create a new variable called temp initialized
// with the value of str
CComBSTR temp(str);
// Append the input parameter value to the temp variable
temp += name ;
// Send the value back to the calling function
*retstr = temp.Detach();
return S_OK;
}
Шаг 2: Создание клиента COM
Теперь будет создан клиент COM для сервера COM в виде DLL. Им будет приложение на базе диалога MFC, с текстовым полем и двумя кнопками.
- Выбрать New → MFC AppWizard из меню Project и набрать имя проекта HelloWorldClient.
- Выбрать тип приложения Dialog based и нажать Finish
- Перейти к закладке ResourceView. Добавить блок редактирования на диалог.
- Срздать переменную типа CString (value), связанную с ним, назвав ее m_edit – нажать CTRL + W для перехода в ClassWizard. Выбрать закладку Member Variables, выбрать IDC_EDIT1 и нажать Add Variable, набрав указанное имя.
- Будет создан файл HelloWorldClientDlg.cpp.
- Двойной щелчок по кнопке OK на диалоге, появится панель запроса имени функции, выбрать имя по умолчанию OnOK для перехода в файл HelloWorldClientDlg.