다음을 통해 공유


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

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

이 문서에서는 속성 추가 마법사를 사용하여 ActiveX 컨트롤에 스톡 속성(이 경우 Caption)을 추가하는 방법을 설명하고 결과 코드를 수정 내용을 설명합니다. 다룰 주제는 다음과 같습니다.

속성 추가 마법사를 사용하여 스톡 속성 추가

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

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

  1. 컨트롤의 프로젝트를 로드합니다.

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

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

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

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

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

  6. Finish를 클릭합니다.

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

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

DISP_STOCKPROP_CAPTION()

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

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

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

이를 통해 컨트롤의 사용자가 Caption 속성을 사용할 수 있습니다. 스톡 속성의 값을 사용하려면 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 멤버 함수를 호출합니다. 이 함수의 매개 변수는 색 속성 값과 선택적 색상표 핸들입니다. 반환 값은 SetTextColor, CreateSolidBrush와 같이 GDI 함수에 전달될 수 있는 COLORREF 값입니다.

스톡 ForeColorBackColor 속성의 색 값은 각각 GetForeColor 또는 GetBackColor 함수를 호출하여 액세스할 수 있습니다.

다음 예제에서는 컨트롤을 그릴 때 이러한 두 색 속성을 사용하는 방법을 보여 줍니다. TranslateColor를 호출하여 임시 COLORREF 변수와 CBrush 개체를 초기화합니다. 하나는 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 클래스