다음을 통해 공유


MFC 컨트롤을 ActiveX: 사용자 지정 이벤트를 추가합니다.

사용자 지정 이벤트 클래스에서 자동으로 발생 되는 스톡 이벤트와 다 COleControl.사용자 지정 이벤트는 이벤트는 컨트롤 개발자에 의해 결정 된 특정 동작만 인식 합니다.이벤트 맵 항목 사용자 지정 이벤트에 의해 표시 됩니다 있는 EVENT_CUSTOM 매크로.다음 절에서는 ActiveX 컨트롤 마법사를 사용 하 여 만든는 ActiveX 컨트롤 프로젝트에 대 한 사용자 지정 이벤트를 구현 합니다.

사용자 지정 이벤트를 추가 하 여 이벤트 추가 마법사

특정 사용자 정의 이벤트가 ClickIn 다음 프로시저를 추가합니다.다른 사용자 지정 이벤트를 추가 하려면이 절차를 사용할 수 있습니다.사용자 지정 이벤트 이름 및 해당 매개 변수 ClickIn 이벤트 이름 및 매개 변수를 대체 합니다.

사용자 이벤트 추가 마법사를 사용 하 여 지정 ClickIn 이벤트를 추가 하려면

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

  2. 클래스 뷰 바로 가기 메뉴를 열려면 ActiveX 컨트롤 클래스를 마우스 오른쪽 단추로 클릭 합니다.

  3. 바로 가기 메뉴에서 클릭 추가 누른 다음 추가 이벤트.

    이 이벤트 추가 마법사가 열립니다.

  4. 이벤트 이름 상자, 먼저 모든 기존 이벤트를 선택 하 고 클릭은 사용자 지정 라디오 버튼을 입력 하 고 ClickIn.

  5. 내부 이름 상자에 이벤트의 발생 함수 이름을 입력 합니다.이 예제에 대 한 이벤트 추가 마법사에서 제공한 기본값을 사용 (FireClickIn).

  6. 호출 매개 변수를 추가 합니다. xCoord (형식 OLE_XPOS_PIXELS) 사용 하 여는 매개 변수 이름매개 변수 형식 컨트롤.

  7. 라는 두 번째 매개 변수를 추가 합니다. yCoord (형식 OLE_YPOS_PIXELS).

  8. 클릭 완료 이벤트를 만들 수 있습니다.

이벤트 마법사의 변경 사항에 대 한 사용자 지정 이벤트 추가

사용자 지정 이벤트를 추가 하면 이벤트 추가 마법사는 컨트롤 클래스를 변경 합니다.H입니다.CPP를 하 고 있습니다.IDL 파일입니다.다음 코드 샘플은 ClickIn 이벤트에 따라 다릅니다.

다음 줄을 헤더에 추가 됩니다 (.H) 컨트롤 클래스 파일:

void FireClickIn(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord)
{
   FireEvent(eventidClickIn, EVENT_PARAM(VTS_XPOS_PIXELS VTS_YPOS_PIXELS), xCoord, yCoord);
}

이 코드를 호출 하는 인라인 함수 선언 FireClickIn 를 호출 하는 COleControl::FireEvent ClickIn 이벤트 및 매개 변수와 이벤트 추가 마법사를 사용 하 여 정의 합니다.

또한, 이벤트 맵 컨트롤 구현 파일에 다음 줄 추가 됩니다 (.컨트롤 클래스의 CPP) 파일:

EVENT_CUSTOM_ID("ClickIn", eventidClickIn, FireClickIn, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)

ClickIn 이벤트이 코드를 인라인 함수에 매핑합니다 FireClickIn, 정의 이벤트 추가 마법사를 사용 하 여 매개 변수를 전달 합니다.

마지막으로 다음 줄에는 컨트롤의 추가 됩니다.IDL 파일:

[id(1)] void ClickIn(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);

이 줄은 ClickIn 이벤트 이벤트 추가 마법사 이벤트 목록에서 이벤트의 위치에서 가져온 특정 ID 번호를 할당 합니다.이벤트 목록에서 이벤트를 예상 하는 컨테이너를 사용할 수 있습니다.예를 들어,이 이벤트가 발생 하면 실행 되는 처리기 코드를 제공할 수 있습니다.

Fireclickin를 호출합니다.

사용자 이벤트 추가 마법사를 사용 하 여 지정 ClickIn 이벤트를 추가한 다음에이 이벤트가 발생 하는 시기를 결정 해야 합니다.이 작업을 호출 하 여 수행할 FireClickIn 때 적절 한 동작을 발생 합니다.이 토론에 대 한 컨트롤을 사용 하는 InCircle 내부 작동는 WM_LBUTTONDOWN 메시지 처리기 ClickIn 이벤트 원형 또는 타원형 영역 내부를 클릭할 때 발생 합니다.추가 다음 절차는 WM_LBUTTONDOWN 처리기입니다.

이벤트 추가 마법사에 메시지 처리기를 추가 합니다.

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

  2. 클래스 뷰에서 컨트롤 클래스 ActiveX를 선택 합니다.

  3. 속성 창에서 메시지 단추를 클릭합니다.

    속성 창에 ActiveX 컨트롤에서 처리할 수 있는 메시지 목록이 표시 됩니다.이미 굵게 표시 된 메시지 처리기 함수에 할당 했습니다.

  4. 속성 창에서 처리할 메시지를 선택 합니다.이 예제에서는 선택 WM_LBUTTONDOWN.

  5. 오른쪽에 있는 드롭다운 목록 상자에서 선택한 <Add> OnLButtonDown.

  6. 메시지 처리기 코드로 구현에서 점프 클래스 뷰에서 새 처리기 함수를 두 번 클릭 (.ActiveX 컨트롤의 CPP) 파일입니다.

다음 호출 샘플 코드는 파일 컨트롤 창 내에서 마우스 왼쪽된 단추를 클릭할 때마다 작동 합니다.이 샘플에서 찾을 수 있습니다는 WM_LBUTTONDOWN 처리기 함수를 OnLButtonDown에 Circ 샘플 추상입니다.

void CMyAxUICtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
   if (InCircle(point))
      FireClickIn(point.x, point.y);

    COleControl::OnLButtonDown(nFlags, point);
}

[!참고]

이벤트 추가 마법사 마우스 단추 동작에 대 한 메시지 처리기를 만들면 동일한 기본 클래스의 메시지 처리기를 호출 자동으로 추가 됩니다.이 호출은 제거 하지 마십시오.컨트롤이 스톡 마우스 메시지를 사용 하는 경우 마우스 캡처가 올바르게 처리 될 수 있도록 기본 클래스의 메시지 처리기를 호출 해야 합니다.

다음 예제에서는 이벤트만 때 클릭 컨트롤 내의 원형 또는 타원형 영역 안에서 발생 합니다.이 동작을 얻으려면 하면 배치할 수 있는 InCircle 함수를 구현 하 여 컨트롤의 (.Cpp).

VARIANT_BOOL CMyAxUICtrl::InCircle(CPoint& point)
{
    CRect rc;
    GetClientRect(rc);
    // Determine radii
    double a = (rc.right - rc.left) / 2;
    double b = (rc.bottom - rc.top) / 2;

    // Determine x, y
    double x = point.x - (rc.left + rc.right) / 2;
    double y = point.y - (rc.top + rc.bottom) / 2;

    // Apply ellipse formula
    return ((x * x) / (a * a) + (y * y) / (b * b) <= 1);
}

다음의 선언을 추가 해야 합니다는 InCircle 함수에서 컨트롤의 머리글에 (.H) 파일:

VARIANT_BOOL InCircle(CPoint& point);

스톡 이름 가진 사용자 지정 이벤트

모두 같은 컨트롤을 구현할 수 있지만 스톡 이벤트와 같은 이름을 가진 사용자 지정 이벤트를 만들 수 있습니다.예를 들어, Click 스톡 이벤트 클릭 정상적으로 발생 될 경우에 발생 하지 않습니다 이라는 사용자 지정 이벤트를 만들 않을 수 있습니다.다음 해당 발생 함수를 호출 하 여 언제 든 지 Click 이벤트를 실행 하지 못했습니다.

다음 절차는 사용자 지정 Click 추가 이벤트.

스톡 이벤트 이름을 사용 하는 사용자 지정 이벤트를 추가 하려면

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

  2. 클래스 뷰 바로 가기 메뉴를 열려면 ActiveX 컨트롤 클래스를 마우스 오른쪽 단추로 클릭 합니다.

  3. 바로 가기 메뉴에서 클릭 추가 누른 다음 추가 이벤트.

    이 이벤트 추가 마법사가 열립니다.

  4. 이벤트 이름 드롭 다운 목록에서 스톡 이벤트 이름을 선택 합니다.이 예제에서는 선택 클릭.

  5. 에 대 한 이벤트 형식을 , 사용자 지정.

  6. 클릭 완료 이벤트를 만들 수 있습니다.

  7. 호출 FireClick 코드에서 적절 한 위치에 있습니다.

참고 항목

참조

COleControl 클래스

개념

MFC 컨트롤을 ActiveX

MFC ActiveX 컨트롤: 메서드