다음을 통해 공유


방법: 관리 코드에서 구현

OLE 항목을 추적 하려면 항목 클릭 또는 문서 뷰를 업데이트 하는 것과 같은 항목에 관련 된 특정 이벤트를 처리 해야 합니다.모든 경우에 임시를 선언할 수 있습니다 CRectTracker 개체 및이 개체를 사용 하 여 항목을 조작 합니다.

사용자가 항목을 선택 하거나 메뉴 명령 사용 하 여 개체를 삽입 하면 OLE 항목의 상태를 나타내는 데 적합 한 스타일의 추적기를 초기화 해야 합니다.다음 표에서 OCLIENT 샘플에서 사용 되는 규칙에 설명 합니다.이러한 스타일에 대 한 자세한 내용은 CRectTracker.

컨테이너 스타일 및 OLE 항목의 상태

표시 스타일

OLE 항목의 상태

점선된 테두리

항목에 연결 된

실선 테두리

문서에 포함 된 항목

크기 조정 핸들

현재 선택 된 항목이

빗금된 테두리

현재 내부 활성 항목입니다

빗살 무늬로 채워진 항목

항목의 서버 열려 있습니다.

이 초기화를 사용 하 여 OLE 항목의 상태를 확인 하 고 적절 한 스타일을 설정 하는 절차를 쉽게 처리할 수 있습니다.SetupTracker 추적기를 초기화 OCLIENT 샘플에서 발견 되는 함수를 보여 줍니다.추적기 주소를이 함수에 대 한 매개 변수는 pTracker. 추적기 관련 된 클라이언트 항목에 대 한 포인터 pItem. 사각형을 가리키는 포인터 pTrueRect.이 함수의 전체 예 MFC OLE 샘플을 참조 하십시오. OCLIENT.

SetupTracker 코드 예제; 단일 함수를 제공 합니다. 함수 줄 토론 함수의 기능을 함께 분산 된 경우도:

void CMainView::SetupTracker(CRectTracker* pTracker, CRectItem* pItem,
   CRect* pTrueRect)

추적기에는 최소 크기를 설정 하 고 추적기의 스타일 지우기 초기화 됩니다.

// set minimum size for our OLE items
pTracker->m_sizeMin.cx = 8;
pTracker->m_sizeMin.cy = 8;

pTracker->m_nStyle = 0;

다음 항목이 현재 선택 되어 있는지 여부 및 여부 항목이 문서에 연결 또는 포함 된 확인 하십시오.테두리의 내부에 있는 크기 조정 핸들이 나타내는 항목이 현재 선택 되어 있는 스타일에 추가 됩니다.점선된 테두리 스타일 항목이 문서에 연결 된 경우에 사용 됩니다.실선 항목이 포함 된 경우에 사용 됩니다.

// setup resize handles if item is selected
if (pItem == m_pSelection)
   pTracker->m_nStyle |= CRectTracker::resizeInside;

// put correct border depending on item type
if (pItem->GetType() == OT_LINK)
   pTracker->m_nStyle |= CRectTracker::dottedLine;
else
   pTracker->m_nStyle |= CRectTracker::solidLine;

다음 코드 오버레이에 현재 항목이 있는 경우 빗살된 무늬로 항목을 엽니다.

// put hatching over the item if it is currently open
if (pItem->GetItemState() == COleClientItem::openState ||
   pItem->GetItemState() == COleClientItem::activeUIState)
{
   pTracker->m_nStyle |= CRectTracker::hatchInside;
}

추적기 표시 될 할 때마다이 함수를 호출할 수 있습니다.예를 들어이 함수를 호출 하는 OnDraw 뷰 클래스의 기능을 합니다.이 보기를 다시 그릴 때마다 추적기의 모양이 업데이트 됩니다.전체 예제를 보려면를 참조는 CMainView::OnDraw 함수는 MFC OLE 샘플의 OCLIENT.

응용 프로그램에서 크기 조정, 이동 또는 적중 감지 등 추적기 코드가 필요한 이벤트가 발생 합니다.이러한 동작은 대개 얻거나 또는 항목을 이동 하려면 시도 중인 것을 나타냅니다.이러한 경우에는 어떻게 선택 했는지 확인 해야 합니다: 크기 조정 핸들 또는 부분 사이의 테두리 크기 조정 핸들입니다.OnLButtonDown 메시지 처리기 테스트 항목을 기준으로 마우스의 위치에 좋은 출발점이 됩니다.호출 CRectTracker::HitTest.테스트 외에 무언가 반환 하면 CRectTracker::hitOutside, the 항목 옮겨지거나 크기가 조정 됩니다.따라서에 대 한 호출을 확인 해야 해당 Track 멤버 함수입니다.참조는 CMainView::OnLButtonDown 함수가 있는 MFC OLE 샘플에서 OCLIENT 의 완전 한 예제.

CRectTracker 클래스 제공 다양 한 커서 모양을 이동, 크기 조정 또는 드래그 여부 작업 되 고 나타내는 데 사용 합니다.이 이벤트를 처리 하려면 마우스 현재 항목이 선택 되었는지 여부를 확인 합니다.면 호출 CRectTracker::SetCursor, 또는 기본 처리기를 호출 합니다.다음 예제에서는 MFC OLE 샘플에서 수 OCLIENT:

BOOL CMainView::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
   if (pWnd == this && m_pSelection != NULL)
   {
      // give the tracker for the selection a chance
      CRectTracker tracker;
      SetupTracker(&tracker, m_pSelection);
      if (tracker.SetCursor(this, nHitTest))
         return TRUE;
   }
   return CScrollView::OnSetCursor(pWnd, nHitTest, message);
}

참고 항목

개념

추적기: OLE 응용 프로그램에서 추적기를 구현