다음을 통해 공유


MFC ActiveX 컨트롤: 스톡 속성 추가

스톡 속성은 클래스 COleControl에 의해 이미 구현되었다는 점에서 사용자 지정 속성과 다릅니다. COleControl 에는 컨트롤에 대한 공통 속성을 지원하는 미리 정의된 멤버 함수가 포함되어 있습니다. 일부 일반적인 속성에는 컨트롤의 캡션과 전경색 및 배경색이 포함됩니다. 다른 주식 속성에 대한 자세한 내용은 이 문서의 뒷부 분에 있는 속성 추가 마법사에서 지원하는 스톡 속성을 참조하세요. 스톡 속성에 대한 디스패치 맵 항목은 항상 DISP_STOCKPROP 접두사로 지정됩니다.

이 문서에서는 속성 추가 마법사를 사용하여 ActiveX 컨트롤에 스톡 속성(이 경우 캡션)을 추가하는 방법을 설명하고 결과 코드 수정에 대해 설명합니다. 항목은 다음과 같습니다.

속성 추가 마법사를 사용하여 Stock 속성 추가

속성에 대한 지원이 COleControl에 의해 자동으로 처리되므로, 스톡 속성을 추가하는 것은 사용자 지정 속성을 추가하는 것보다 코드가 덜 필요합니다. 다음 절차에서는 ActiveX 컨트롤 프레임워크에 stock Caption 속성을 추가하는 방법을 보여 줍니다. 다른 주식 속성을 추가하는 데도 사용할 수 있습니다. 선택한 스톡 속성 이름을 캡션으로 대체합니다.

속성 추가 마법사를 사용하여 stock Caption 속성을 추가하려면

  1. 컨트롤의 프로젝트를 로드하세요.

  2. 클래스 뷰에서 컨트롤의 라이브러리 노드를 확장합니다.

  3. 컨트롤의 인터페이스 노드(라이브러리 노드의 두 번째 노드)를 마우스 오른쪽 단추로 클릭하여 바로 가기 메뉴를 엽니다.

  4. 바로 가기 메뉴에서 추가 를 클릭한 다음 속성 추가를 클릭합니다.

    그러면 속성 추가 마법사가 열립니다.

  5. 속성 이름 상자에서 캡션을 클릭합니다.

  6. 완료를 클릭합니다.

스톡 속성에 대한 속성 추가 마법사 변경 내용

COleControl 스톡 속성을 지원하므로 속성 추가 마법사는 클래스 선언을 변경하지 않고 디스패치 맵에 속성을 추가합니다. 속성 추가 마법사는 구현 파일(.CPP)에 있는 컨트롤의 디스패치 맵에 다음 줄을 추가합니다.

DISP_STOCKPROP_CAPTION()

다음 줄이 컨트롤의 인터페이스 설명(.IDL) 파일에 추가됩니다.

[id(DISPID_CAPTION), helpstring("property Caption")] BSTR Caption;

이 줄은 Caption 속성에 특정 ID를 할당합니다. 속성을 바인딩할 수 있으며 값을 수정하기 전에 데이터베이스에서 사용 권한을 요청합니다.

이렇게 하면 컨트롤 사용자가 Caption 속성을 사용할 수 있습니다. stock 속성의 값을 사용하려면 기본 클래스의 멤버 변수 또는 멤버 함수에 COleControl 액세스합니다. 이러한 멤버 변수 및 멤버 함수에 대한 자세한 내용은 속성 추가 마법사에서 지원하는 스톡 속성의 다음 섹션을 참조하세요.

속성 추가 마법사에서 지원하는 스톡 속성

클래스는 COleControl 9개의 주식 속성을 제공합니다. 속성 추가 마법사를 사용하여 원하는 속성을 추가할 수 있습니다.

재산 디스패치 지도 항목 값에 액세스하는 방법
Appearance DISP_STOCKPROP_APPEARANCE( ) 로 액세스할 수 있는 값입니다 m_sAppearance.
BackColor DISP_STOCKPROP_BACKCOLOR( ) 를 호출 GetBackColor하여 액세스할 수 있는 값입니다.
BorderStyle DISP_STOCKPROP_BORDERSTYLE( ) 로 액세스할 수 있는 값입니다 m_sBorderStyle.
Caption DISP_STOCKPROP_CAPTION( ) 를 호출 InternalGetText하여 액세스할 수 있는 값입니다.
Enabled DISP_STOCKPROP_ENABLED( ) 로 액세스할 수 있는 값입니다 m_bEnabled.
Font DISP_STOCKPROP_FONT( ) MFC ActiveX 컨트롤: 글꼴 사용 문서를 참조하세요.
ForeColor DISP_STOCKPROP_FORECOLOR( ) 를 호출 GetForeColor하여 액세스할 수 있는 값입니다.
hWnd DISP_STOCKPROP_HWND( ) 로 액세스할 수 있는 값입니다 m_hWnd.
Text DISP_STOCKPROP_TEXT( ) 를 호출 InternalGetText하여 액세스할 수 있는 값입니다. 속성 이름을 제외하고 이 속성은 동일합니다 Caption.
ReadyState DISP_STOCKPROP_READYSTATE() m_lReadyState 또는 GetReadyState로 접근 가능한 값

주식 속성 및 알림

대부분의 기본 속성에는 덮어쓸 수 있는 알림 기능이 있습니다. 예를 들어 속성이 BackColor 변경 OnBackColorChanged 될 때마다 함수(컨트롤 클래스의 멤버 함수)가 호출됩니다. COleControl의 기본 구현은 InvalidateControl을 호출합니다. 이 상황에 대응하여 추가 작업을 수행하고자 한다면 이 함수를 재정의하십시오.

색 속성

컨트롤을 그릴 때 기본 ForeColorBackColor 속성 또는 사용자 정의 색상 속성을 사용할 수 있습니다. 색 속성을 사용하려면 COleControl::TranslateColor 멤버 함수를 호출합니다. 이 함수의 매개 변수는 색 속성의 값과 선택적 색상표 핸들입니다. 반환 값은 GDI 함수(예: SetTextColor)에 전달할 수 있는 CreateSolidBrush 값입니다.

주식 ForeColorBackColor 속성의 색 값은 각각 GetForeColor 함수 또는 GetBackColor 함수를 호출하여 액세스됩니다.

다음 예제에서는 컨트롤을 그리는 경우 이러한 두 가지 색 속성을 사용하는 방법을 보여 줍니다. 임시 COLORREF 변수와 CBrush 객체를 TranslateColor를 호출하여 초기화합니다. 하나는 ForeColor 속성을 사용하고, 다른 하나는 BackColor 속성을 사용합니다. 그런 다음 임시 CBrush 개체를 사용하여 컨트롤의 사각형을 칠하고 속성을 사용하여 텍스트 색을 ForeColor 설정합니다.

CBrush bkBrush(TranslateColor(GetBackColor()));
COLORREF clrFore = TranslateColor(GetForeColor());
pdc->FillRect(rcBounds, &bkBrush);
pdc->SetTextColor(clrFore);
pdc->DrawText(InternalGetText(), -1, rcBounds, DT_SINGLELINE | DT_CENTER | DT_VCENTER);

참고하십시오

MFC ActiveX 컨트롤
MFC ActiveX 컨트롤: 속성
MFC ActiveX 컨트롤: 메서드
COleControl 클래스