Добавление свойства в элемент управления (учебник ATL, часть 3)

IPolyCtl — это интерфейс, содержащий пользовательские методы и свойства элемента управления, и вы добавите в него свойство.

Добавление определений свойств в проект

  1. В представленииPolygon классов разверните ветвь.

  2. Щелкните правой кнопкой мыши IPolyCtl.

  3. В контекстном меню нажмите кнопку "Добавить" и нажмите кнопку "Добавить свойство". Откроется мастер добавления свойств.

  4. Введите Sides имя свойства.

  5. В раскрывающемся списке типа свойства выберите short.

  6. Нажмите кнопку "ОК" , чтобы завершить добавление свойства.

  7. В Обозреватель решений откройте Polygon.idl и замените следующие строки в конце IPolyCtl : IDispatch интерфейса:

    short get_Sides();
    void set_Sides(short value);
    

    на

    [propget, id(1), helpstring("property Sides")] HRESULT Sides([out, retval] short *pVal);
    [propput, id(1), helpstring("property Sides")] HRESULT Sides([in] short newVal);
    
  8. В Обозреватель решений откройте PolyCtl.h и добавьте следующие строки после определенияm_clrFillColor:

    short m_nSides;
    STDMETHOD(get_Sides)(short* pval);
    STDMETHOD(put_Sides)(short newval);
    

Хотя теперь у вас есть скелетные функции для задания и извлечения свойства и переменной для хранения свойства, необходимо соответствующим образом реализовать функции.

Обновление методов get и put

  1. Задайте значение m_nSidesпо умолчанию . Сделайте фигуру по умолчанию треугольником, добавив строку в конструктор в PolyCtl.h:

    m_nSides = 3;
    
  2. Реализуйте методы Get и Put. put_Sides Объявления get_Sides функций добавлены в PolyCtl.h. Теперь добавьте код для get_Sidesput_Sides PolyCtl.cpp следующим образом:

    STDMETHODIMP CPolyCtl::get_Sides(short* pVal)
    {
       *pVal = m_nSides;
    
       return S_OK;
    }
    
    STDMETHODIMP CPolyCtl::put_Sides(short newVal)
    {
       if (2 < newVal && newVal < 101)
       {
          m_nSides = newVal;
          return S_OK;
       }
       else
       {
          return Error(_T("Shape must have between 3 and 100 sides"));
       }
    }
    

Метод get_Sides возвращает текущее значение Sides свойства через pVal указатель. В методе put_Sides код гарантирует, что пользователь устанавливает Sides свойство в допустимое значение. Минимальное значение должно быть 3, и поскольку массив точек будет использоваться для каждой стороны, 100 является разумным ограничением для максимального значения.

Теперь у вас есть свойство Sides. На следующем шаге вы измените код рисования на его использование.

Назад к шагу 2 | в шаге 4

См. также

Руководство