비활성 동안 마우스 상호 작용을 제공 합니다.
컨트롤을 즉시 활성화 되어 있지 않으면 여전히 처리 하려는 수 있습니다 WM_SETCURSOR 및 WM_MOUSEMOVE 는 컨트롤 자체의 창이 있는 경우에 메시지.사용 하 여 수행할 수 있습니다 COleControl의 구현의 IPointerInactive 인터페이스는 기본적으로 비활성화 됩니다.(참조는 ActiveX SDK 에 대 한 설명은이 인터페이스에 대 한 합니다.) 이 기능을 사용 하려면 포함을 pointerInactive 플래그를 반환 하는 플래그 집합을 COleControl::GetControlFlags:
DWORD CMyAxOptCtrl::GetControlFlags()
{
DWORD dwFlags = COleControl::GetControlFlags();
...
// The control can receive mouse notifications when inactive.
dwFlags |= pointerInactive;
...
return dwFlags;
}
선택 하는 경우이 플래그를 포함 하는 코드를 자동으로 생성 되는 마우스 포인터 알림 때 비활성 옵션에 제어 설정 페이지와 컨트롤을 만들 때는 MFC ActiveX 컨트롤 마법사.
경우는 IPointerInactive 인터페이스 사용, 컨테이너 대리자 WM_SETCURSOR 및 WM_MOUSEMOVE 메시지를.COleControl구현의 IPointerInactive 좌표를 적당히 마우스를 조정한 후 컨트롤의 메시지 맵을 통해 메시지를 디스패치합니다.메시지 맵에 해당 엔트리를 추가 하 여 보통의 창 메시지 처럼 처리할 수 있습니다.처리기에서 이러한 메시지를 사용 하지 마십시오의 m_hWnd 멤버 변수를 사용 하는 멤버 함수가 해당 값이 아닌 첫 번째 확인 하지 않고 NULL.
비활성 컨트롤의 OLE 끌어서 놓기 작업의 대상으로 할 수도 있습니다.이 컨트롤의 창이 끌어 놓기 대상으로 등록할 수 있도록 사용자가 개체 위로 끌 순간 컨트롤을 활성화 해야 합니다.활성화 마우스를 끄는 동안에 발생 하 게 하려면 재정의 COleControl::GetActivationPolicy를 반환 하 고 있는 POINTERINACTIVE_ACTIVATEONDRAG 플래그:
DWORD CMyAxOptCtrl::GetActivationPolicy()
{
return POINTERINACTIVE_ACTIVATEONDRAG;
}
활성화는 IPointerInactive 인터페이스 일반적으로 즉, 원하는 컨트롤을 항상 마우스 메시지를 처리할 수 있습니다.지원 하지 않는 컨테이너에서이 동작을 얻으려면는 IPointerInactive 항상 표시 되었을 때 활성화 해야 인터페이스, 해당 컨트롤이 포함 되어야는 OLEMISC_ACTIVATEWHENVISIBLE 플래그 중의 기타 플래그.그러나이 플래그를 사용 하지 않으려면 효과 컨테이너에서 가져오기 지원 하지 IPointerInactive를 지정할 수도 있습니다의 OLEMISC_IGNOREACTIVATEWHENVISIBLE 플래그:
static const DWORD BASED_CODE _dwMyOleMisc =
OLEMISC_ACTIVATEWHENVISIBLE |
OLEMISC_IGNOREACTIVATEWHENVISIBLE |
OLEMISC_SETCLIENTSITEFIRST |
OLEMISC_INSIDEOUT |
OLEMISC_CANTLINKINSIDE |
OLEMISC_RECOMPOSEONRESIZE;