Визуальное программирование и MFC


         

в результате появится диалоговое окно




Для добавления в интерфейс COM-объектов специализированных методов
(реализовываться они будут в классе CSimpleMFC) следует:

  • запустить ClassWizard;


  • переключится на его панель “Automation”;


  • нажать кнопку “Add Method…”, в результате появится диалоговое окно “Add Method”;


  • в этом диалоге указать название метода (поле “External name”), имя компонентной функции Cи++ (метод класса CSimpleMFC), которая будет выполняться при выборе данного метода (поле “Internal name”), тип возвращаемого значения этого метода и его аргументы, если таковые имеются.


  • При добавлении новых методов автоматизации (видимых клиентом) ClassWizard вносит в таблицу параметров и методов (в схему диспетчеризации BEGIN_DISPATCH_MAP - END_DISPATCH_MAP класса CSimpleMFC), новый элемент. Допустим, добавлен новый метод, имеющий следующее объявление: afx_msg void Initialize (long initializer);. Тогда в схему диспетчеризации класса будет добавлена строка в следующем формате:

    DISP_FUNCTION(CSimpleMFC, "Initialize", Initialize, VT_EMPTY, VTS_I4)



    Для того, чтобы добавить COM-объекту параметр (свойство)
    следует

  • выбрать панель “Automation” мастера ClassWizard;


  • нажать кнопку “Add Property...”, чтобы перейти в диалоговое окно с таким же именем;


  • в этом диалоге выбрать один из двух представленных вариантов реализации нового параметра: через пару принадлежащих классу функций Get/Set или через комбинацию какого-либо элемента данных (для хранения значения этого параметра) и функции реакции на изменение этого параметра.




  • В
    первом варианте обеспечивается большая степень контроля при считывании или задании клиентом нового значения для параметра; однако в этом случае в классе не выделяется память под новый параметр. Во втором варианте выделение памяти для параметра предусмотрено, однако COM-объект будет лишь пассивно предупрежден об изменении его значения: функция реакции вызывается механизмом MFC лишь после того, как параметр изменился.

    Допустим, вводится новое свойство NewProp типа short и выбран второй вариант реализации параметра.В ответ мастер ClassWizard добавит в определение класса CSimpleMFC следующие описания:

    short m_newProp; afx_msg void OnNewPropChanged();

    В реализации класса CSimpleMFC появится пока еще "пустая" функция реакции на изменение параметра CSimpleMFC::OnNewPropChanged. В схему диспетчеризации при этом будет добавлена следующая строка:

    DISP_PROPERTY_NOTIFY(CSimpleMFC,"NewProp",m_newProp, OnNewPropChanged,VT_I2)

    После компиляции и компоновки приложения следует зарегистрировать DLL-сервер в реестре операционной среды Windows. Для этого следует выбрать команду “RegisterControl” меню “Tools” среды Microsoft Developer Studio.


    Содержание  Назад  Вперед