컨트롤 이벤트(COM)

속성 및 메서드를 제공하는 것 외에도 컨트롤은 클라이언트에 이벤트를 알리는 나가는 인터페이스를 제공합니다. 클라이언트는 이러한 이벤트 처리를 지원해야 합니다. 연결 가능한 개체의 작동 방식에 대한 자세한 내용은 COM 및 연결 가능한 개체의 이벤트를 참조하세요.

컨트롤은 다양한 용도로 다른 나가는 인터페이스를 지원할 수 있습니다. 나가는 모든 인터페이스는 컨트롤의 형식 정보에서 원본 인터페이스로 표시되지만 기본 나가는 인터페이스임을 나타내는 기본 인터페이스는 하나만 기본으로 표시됩니다.

컨테이너는 컨트롤에서 정의한 하나 이상의 나가는 인터페이스를 지원할 수 있습니다. 컨트롤은 나가는 인터페이스 중 일부에 대해서만 지원을 제공하는 컨테이너를 처리하도록 준비해야 합니다.

컨트롤은 다음 네 가지 종류의 이벤트를 지원합니다.

  • 이벤트를 요청합니다. 컨트롤은 나가는 인터페이스에서 메서드를 호출하여 클라이언트의 권한을 요청하여 요청 이벤트를 트리거합니다. 클라이언트는 컨트롤이 호출한 메서드의 부울 out 매개 변수를 통해 컨트롤에 신호를 보냅니다. 따라서 클라이언트는 컨트롤이 작업을 수행하지 못하도록 방지할 수 있습니다.
  • 이벤트 이전. 컨트롤은 나가는 인터페이스에서 메서드를 호출하여 작업을 수행하도록 클라이언트 모자에 알리므로 before 이벤트를 트리거합니다. 클라이언트는 작업을 방지할 수 있는 기회가 없지만 발생하려는 작업을 고려할 때 필요한 단계를 수행할 수 있습니다.
  • 이벤트 후. 컨트롤은 나가는 인터페이스에서 메서드를 호출하여 작업을 수행했음을 클라이언트에 알리므로 after 이벤트를 트리거합니다. 다시 말하지만 클라이언트는 이 작업을 취소할 수 없지만 발생한 작업을 고려할 때 필요한 단계를 수행할 수 있습니다.
  • 이벤트를 수행합니다. 컨트롤은 클라이언트가 컨트롤의 작업을 재정의하고 몇 가지 대체 또는 추가 작업을 제공할 수 있도록 do 이벤트를 트리거합니다. 일반적으로 컨트롤이 do 이벤트에 대해 호출하는 메서드에는 발생할 작업에 대해 클라이언트와 협상하기 위한 여러 매개 변수가 있습니다.

컨트롤이 지원할 수 있는 표준 이벤트에 대해 정의되는 dispids는 Click, DblClick, KeyDown, KeyPress, KeyUp, MouseMove, MouseUp 및 Error입니다. 이러한 모든 표준 이벤트에는 표준 상태 나타내는 음수 DISPID 값이 있습니다.

IOleControl::FreezeEvents 메서드는 TRUE로 호출될 때 FreezeEventsFALSE로 다시 호출될 때까지 컨테이너가 컨트롤의 이벤트 처리를 방해할지 여부를 컨트롤에 알려줍니다. 이 시간 동안 컨트롤은 실제로 이벤트를 처리하는 컨테이너에 종속될 수 없습니다. 이벤트를 처리해야 하는 경우 FreezeEventsFALSE로 호출될 때 이벤트를 발생시키기 위해 컨트롤이 이벤트를 큐에 대기시켜야 합니다.

ActiveX 컨트롤