스톡 속성은 클래스 COleControl
에 의해 이미 구현되었다는 점에서 사용자 지정 속성과 다릅니다.
COleControl
에는 컨트롤에 대한 공통 속성을 지원하는 미리 정의된 멤버 함수가 포함되어 있습니다. 일부 일반적인 속성에는 컨트롤의 캡션과 전경색 및 배경색이 포함됩니다. 다른 주식 속성에 대한 자세한 내용은 이 문서의 뒷부 분에 있는 속성 추가 마법사에서 지원하는 스톡 속성을 참조하세요. 스톡 속성에 대한 디스패치 맵 항목은 항상 DISP_STOCKPROP 접두사로 지정됩니다.
이 문서에서는 속성 추가 마법사를 사용하여 ActiveX 컨트롤에 스톡 속성(이 경우 캡션)을 추가하는 방법을 설명하고 결과 코드 수정에 대해 설명합니다. 항목은 다음과 같습니다.
-
비고
Visual Basic 사용자 지정 컨트롤에는 일반적으로 위쪽, 왼쪽, 너비, 높이, 맞춤, 태그, 이름, TabIndex, TabStop 및 Parent와 같은 속성이 있습니다. 그러나 ActiveX 컨트롤 컨테이너는 이러한 컨트롤 속성을 구현하는 역할을 하므로 ActiveX 컨트롤은 이러한 속성을 지원하지 않아야 합니다.
속성 추가 마법사를 사용하여 Stock 속성 추가
속성에 대한 지원이 COleControl
에 의해 자동으로 처리되므로, 스톡 속성을 추가하는 것은 사용자 지정 속성을 추가하는 것보다 코드가 덜 필요합니다. 다음 절차에서는 ActiveX 컨트롤 프레임워크에 stock Caption 속성을 추가하는 방법을 보여 줍니다. 다른 주식 속성을 추가하는 데도 사용할 수 있습니다. 선택한 스톡 속성 이름을 캡션으로 대체합니다.
속성 추가 마법사를 사용하여 stock Caption 속성을 추가하려면
컨트롤의 프로젝트를 로드하세요.
클래스 뷰에서 컨트롤의 라이브러리 노드를 확장합니다.
컨트롤의 인터페이스 노드(라이브러리 노드의 두 번째 노드)를 마우스 오른쪽 단추로 클릭하여 바로 가기 메뉴를 엽니다.
바로 가기 메뉴에서 추가 를 클릭한 다음 속성 추가를 클릭합니다.
그러면 속성 추가 마법사가 열립니다.
속성 이름 상자에서 캡션을 클릭합니다.
완료를 클릭합니다.
스톡 속성에 대한 속성 추가 마법사 변경 내용
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
을 호출합니다. 이 상황에 대응하여 추가 작업을 수행하고자 한다면 이 함수를 재정의하십시오.
색 속성
컨트롤을 그릴 때 기본 ForeColor
및 BackColor
속성 또는 사용자 정의 색상 속성을 사용할 수 있습니다. 색 속성을 사용하려면 COleControl::TranslateColor 멤버 함수를 호출합니다. 이 함수의 매개 변수는 색 속성의 값과 선택적 색상표 핸들입니다. 반환 값은 GDI 함수(예: 및 SetTextColor
)에 전달할 수 있는 CreateSolidBrush
값입니다.
주식 ForeColor
및 BackColor
속성의 색 값은 각각 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 클래스