In-Place 활성화 구현

내부 활성화를 사용 하면 사용자가 컨테이너 문서를 떠나지 않고도 포함 된 개체와 상호 작용할 수 있습니다. 사용자가 개체를 활성화 하면 컨테이너 응용 프로그램 및 서버 응용 프로그램의 메뉴 모음에서 요소를 구성 하는 복합 메뉴 모음이 컨테이너의 주 메뉴 모음을 대체 합니다. 따라서 활성 개체에 대 한 상황에 맞는 도움말을 포함 하 여 두 응용 프로그램의 명령과 기능이 사용자에 게 제공 됩니다. 사용자가 문서의 개체 일부가 아닌 부분으로 작업을 시작 하면 개체가 비활성화 되어 컨테이너 문서의 원래 메뉴가 복합 메뉴를 대체 합니다.

이 기능은 원래 내부 편집 의 이름에 의해 발생 했습니다. 편집은 사용자가 실행 중인 개체와 상호 작용 하는 한 가지 방법일 뿐 이므로 이름이 변경 되었습니다. 예를 들어 소리 클립을 편집 하는 대신 수신 대기 시킬 수 있습니다. 비디오 클립을 편집 하는 대신 볼 수 있습니다. 현재 위치의 활성화는 별도의 창을 호출 하지 않고도 제자리에서 실행 될 수 있기 때문에 비디오 클립의 경우 특히 apt. 비디오를 표시 하는 경우에는 컨테이너 문서에서 인접 한 텍스트 데이터와 함께 표시 되는 것이 중요 합니다.

컨테이너 및 서버 응용 프로그램 모두에 대해 내부 활성화를 구현 하는 것은 매우 선택적입니다. OLE는 개체를 활성화 하 여 서버 응용 프로그램이 별도의 창을 열도록 하는 모델을 계속 지원 합니다. 연결 된 개체는 별도의 창에서 항상 열려 있으므로 별도의 문서에 있음을 강조 합니다.

내부 활성화는 해당 컨테이너에서 IOleObject::D 오버 b 호출에 대 한 응답으로 개체를 사용 하 여 시작 합니다. 이 호출은 일반적으로 사용자가 개체를 두 번 클릭 하거나 컨테이너 응용 프로그램의 편집 메뉴에서 명령 (동사)을 선택 하는 경우에 발생 합니다.

포함 된 개체가 활성화 되어 있는 동안 내부 창에 키보드와 마우스 입력이 수신 됩니다. 사용자가 복합 메뉴 모음에서 명령을 선택 하면 선택한 특정 드롭다운 메뉴를 소유 하는에 따라 명령 및 연결 된 메뉴 메시지가 컨테이너 또는 개체 응용 프로그램으로 전송 됩니다. 개체의 눈금자, 도구 모음 또는 프레임 장식을 사용 하는 입력은 이러한 창을 소유 하는 포함 된 개체로 직접 이동 합니다.

컨테이너에서 사용자 입력에 대 한 응답으로 해당 개체를 비활성화 하거나, 비디오 클립 처럼 자발적으로 활성 상태를 제공 하는 등의 방법으로 내부 활성화 된 포함 개체는 활성 상태로 유지 됩니다. 사용자는 컨테이너 문서 내부를 클릭 하 고 개체의 내부 활성화 창 외부에서 클릭 하거나 단순히 다른 개체를 클릭 하 여 개체를 비활성화할 수 있습니다. 사용자가 컨테이너의 제목 표시줄, 스크롤 막대 또는 특히 메뉴 모음을 클릭 하면 내부 활성화 된 개체가 활성 상태로 유지 됩니다.

내부 활성화 개체 서버를 in-process 서버 (DLL) 또는 로컬 서버 (EXE)로 구현할 수 있습니다. 두 경우 모두 복합 메뉴 모음은 서버 및 컨테이너 프로세스의 항목 (일반적으로 드롭다운 메뉴)을 포함 합니다. In-process 서버의 경우 내부 활성화 창은 컨테이너 응용 프로그램의 메시지 펌프를 통해 입력을 수신 하는 컨테이너의 창 계층 구조에 있는 또 다른 자식 창이 됩니다.

로컬 서버의 경우 내부 활성화 창은 포함 된 개체의 서버 응용 프로그램 프로세스에 속하며 부모 창은 컨테이너에 속합니다. 내부 활성화 창에 대 한 입력이 서버의 메시지 큐에 나타나고 서버의 메시지 루프로 전달 됩니다. OLE 라이브러리는 메뉴 명령 및 메시지가 올바르게 디스패치 됨을 확인 해야 합니다.

복합 문서