다음을 통해 공유


컨트롤에 속성 추가(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. GetPut 메서드를 구현합니다. get_Sidesput_Sides 함수 선언이 PolyCtl.h에 추가되었습니다. 이제 다음을 사용하여 get_Sides put_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단계로 돌아가기

참고 항목

자습서