Средства разработки приложений


Часть 1: Дублирование интерфейсов - часть 4


Наиболее просто добавить код с помощью "copy and paste" непосредственно из окна ITypeLib Viewer. Ваш код должен выглядеть точно также, как в примере, за исключением ID интерфейса.

Откройте LevelGetter.H и объявите методы в классе. В вашем классе объявление методов должно выглядеть как это показано ниже:

  • class LevelGetter : public ILevelGetter, public CComObjectRoot, public CComCoClass<LevelGetter,&CLSID_LevelGetter> { public: LevelGetter(){} BEGIN_COM_MAP(LevelGetter) COM_INTERFACE_ENTRY(ILevelGetter) END_COM_MAP() //DECLARE_NOT_AGGREGATABLE(LevelGetter) // Remove the comment from the line above if you don't want your object to // support aggregation. DECLARE_REGISTRY_RESOURCEID(IDR_LevelGetter) // ILevelGetter public: //THE FOUR NEW METHODS STDMETHOD (GetLowestPossibleSafeLevel) (long* plLowestSafeLevel); STDMETHOD (GetHighestPossibleSafeLevel) (long* plHighestSafeLevel); STDMETHOD (GetCurrentLevel) (long* plCurrentLevel); STDMETHOD (GetTextMessage) (BSTR* ppbstrMessage); };
  • Вам теперь нужно сделать четыре метода. Для демонстрационных целей, давайте оставим методы простыми. Реализуйте их по вашему усмотрению или скопируете следующий код из образцов.

  • //--------------------------------------------------------------------------- STDMETHODIMP LevelGetter::GetLowestPossibleSafeLevel(long* plLowestSafeLevel) { *plLowestSafeLevel = 70; return S_OK; } //--------------------------------------------------------------------------- STDMETHODIMP LevelGetter::GetHighestPossibleSafeLevel(long* plHighestSafeLevel) { *plHighestSafeLevel = 98; return S_OK; } //--------------------------------------------------------------------------- STDMETHODIMP LevelGetter::GetCurrentLevel(long* plCurrentLevel) { *plCurrentLevel = 94; return S_OK; } //--------------------------------------------------------------------------- STDMETHODIMP LevelGetter::GetTextMessage(BSTR* ppbstrMessage) { *ppbstrMessage = ::SysAllocString(L"All clear, water level is fine"); return S_OK; }
  • Поскольку у вас уже есть методы, скомпилируйте и слинкуйте вашу COM DLL.Затем мы начнем создавать клиентское приложение.




    Начало  Назад  Вперед