MFC 컨트롤을 ActiveX: 사용자 지정 메서드 추가
사용자 지정 메서드는 이미에서 구현 되지 않습니다는 스톡 메서드와 다 COleControl.컨트롤을 추가 하는 각 사용자 지정 메서드에 대 한 구현을 제공 해야 합니다.
ActiveX 컨트롤 사용자는 컨트롤 관련 작업을 수행 하려면 언제 든 지 사용자 지정 메서드를 호출할 수 있습니다.사용자 지정 하는 방법에 대 한 디스패치 맵 엔트리는 DISP_FUNCTION.
사용자 지정 메서드를 추가 하 여 메서드 추가 마법사
다음 절차는 ActiveX 컨트롤의 뼈대 코드에 사용자 지정 PtInCircle 메서드를 추가 하는 방법을 보여 줍니다.Ptincircle은 컨트롤에 전달 하는 좌표 안쪽 또는 바깥쪽 원 지를 확인 합니다.다른 사용자 지정 메서드를 추가 하려면이 절차를 사용할 수도 있습니다.사용자 지정 메서드 이름과 해당 PtInCircle 메서드 이름 및 매개 변수는 매개 변수를 대체 합니다.
[!참고]
이 예제는 InCircle 함수를 이벤트.이 함수에 대 한 자세한 내용은 ActiveX 컨트롤 MFC: 있는 ActiveX 컨트롤에 사용자 지정 이벤트 추가.
메서드 추가 마법사를 사용 하 여 PtInCircle 사용자 지정 메서드를 추가 하려면
컨트롤의 프로젝트를 로드 합니다.
클래스 뷰에서 컨트롤의 라이브러리 노드를 확장 합니다.
(두 번째 라이브러리 노드 노드) 컨트롤 인터페이스 노드를 마우스 오른쪽 단추로 바로 가기 메뉴를 엽니다.
바로 가기 메뉴에서 클릭 추가 누른 다음 메서드 추가.
그러면 메서드 추가 마법사가 열립니다.
에 메서드 이름 상자에 입력 PtInCircle.
에 내부 이름 상자에서 메서드의 내부 함수 이름을 입력 하거나 기본값을 사용 (이 경우 PtInCircle).
에 반환 형식 상자에서 누릅니다 VARIANT_BOOL 메서드의 반환 형식에 대 한.
사용 하는 매개 변수 형식 및 매개 변수 이름 컨트롤을 호출 하는 매개 변수 추가 xCoord (형식 OLE_XPOS_PIXELS).
사용 하는 매개 변수 형식 및 매개 변수 이름 컨트롤을 호출 하는 매개 변수 추가 yCoord (형식 OLE_YPOS_PIXELS).
마침을 클릭합니다.
메서드 추가 마법사에서 변경에 대 한 사용자 지정 방법
사용자 지정 메서드를 추가 하면 메서드 추가 마법사 일부 컨트롤 클래스의 헤더는 변경 (.구현 및 H) (.CPP) 파일입니다.컨트롤 클래스 헤더의 디스패치 맵 선언 다음 줄 추가 됩니다 (.H) 파일:
VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);
이 코드는 디스패치 메서드 처리기 호출 선언 PtInCircle.외부 이름 Ptincircle을 사용 하 여 컨트롤 사용자가이 함수를 호출할 수 있습니다.
다음 줄을 컨트롤에 추가 됩니다.IDL 파일:
[id(1), helpstring("method PtInCircle")] VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);
이 줄 PtInCircle 메서드 위치 메서드 추가 마법사의 메서드 및 속성 목록에 특정 ID 번호를 할당합니다.메서드 추가 마법사에 사용자 지정 메서드를 추가 하는 데 사용 된 때문에 엔트리는이 자동으로 프로젝트에 추가 되었습니다.IDL 파일입니다.
또한 구현에 위치한 다음 줄을 (.CPP) 파일에 해당 컨트롤 클래스의 컨트롤의 디스패치 맵에 추가 됩니다.
DISP_FUNCTION_ID(CMyAxUICtrl, "PtInCircle", dispidPtInCircle, PtInCircle, VT_BOOL, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)
DISP_FUNCTION 매크로 맵 PtInCircle 메서드는 컨트롤의 처리기 함수에 PtInCircle, 반환 형식을 선언 VARIANT_BOOL, 두 가지 형식의 매개 변수를 선언 하 고 VTS_XPOS_PIXELS 및 VTS_YPOSPIXELS 전달 될 PtInCircle.
마지막으로 스텁 함수 메서드 추가 마법사를 추가 CSampleCtrl::PtInCircle 아래쪽 컨트롤의 구현으로 (.CPP) 파일입니다.에 대 한 PtInCircle 앞서 설명한 것 처럼 작동 하 여 다음과 같이 수정 해야 합니다.
VARIANT_BOOL CMyAxUICtrl::PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CPoint point(xCoord, yCoord);
return InCircle(point);
}