다음을 통해 공유


ACDUAL 샘플: 자동화 응용 프로그램에 이중 인터페이스 추가

업데이트: 2007년 11월

ACDual에서는 MFC 기반 자동화(이전의 OLE 자동화) 응용 프로그램에 이중 인터페이스 지원을 추가하는 방법을 보여 줍니다. 솔루션은 다음 프로젝트로 구성됩니다.

  • ACDualDriv - 디스패치 인터페이스 또는 vtable 바인딩을 사용하여 서버 응용 프로그램을 제어할지 여부를 선택할 수 있는 자동화 클라이언트 AUTODRIV 프로젝트 버전을 포함합니다.

  • ACDual - 이중 인터페이스 지원과 함께 자동화 서버 AUTOCLIK 프로젝트의 실제 버전을 포함합니다.

보안 정보:

이 샘플 코드는 개념을 보여 주기 위해 제공되며 가장 안전한 코드 작성 방법을 제시하지 않을 수 있으므로 응용 프로그램이나 웹 사이트에서 사용할 수 없습니다. Microsoft는 샘플 코드를 원래 용도 이외의 다른 용도로 사용하는 경우 발생하는 부수적이나 파생적인 손해에 대해 책임을 지지 않습니다.

샘플 및 이를 설치하기 위한 지침을 가져오려면

  • Visual Studio의 도움말 메뉴에서 샘플을 클릭합니다.

    자세한 내용은 샘플 파일 찾기를 참조하십시오.

  • 최신 버전 및 전체 샘플 목록은 Visual Studio 2008 Samples 페이지에서 온라인으로 사용할 수 있습니다.

  • 컴퓨터의 하드 디스크에서도 샘플을 찾을 수 있습니다. 기본적으로 샘플과 추가 정보 파일은 \Program Files\Visual Studio 9.0\Samples\ 아래의 폴더에 복사됩니다. Visual Studio Express Edition의 경우에는 모든 샘플이 온라인에 있습니다.

샘플 빌드

ACDual 샘플을 빌드하려면

  1. acdual 디렉터리에 있는 acdual.sln 솔루션을 엽니다.

  2. 빌드 메뉴에서 빌드를 클릭합니다.

  3. 시스템에 ACDual 자체를 등록할 수 있도록 ACDual을 독립 실행형 응용 프로그램으로 한 번 실행합니다.

샘플 실행

ACDual 응용 프로그램을 등록한 후에는 ACDualDriv 응용 프로그램을 실행할 수 있습니다. IDE에서 솔루션을 빌드하면 ACDualDriv를 실행하기 전에 ACDualDriv 등록이 자동으로 수행됩니다. ACDualDriv는 ACDual 응용 프로그램을 시작하고 Document 개체를 만듭니다. 그런 다음 사용자는 ACDualDriv 사용자 인터페이스를 통한 자동화를 사용하여 해당 개체을 조작할 수 있습니다. 또한 ACDualDriv에는 ACDual Document 개체와 통신하기 위해 VTBL 바인딩을 사용할지 여부를 선택할 수 있는 추가 확인란도 있습니다.

ACDual 서버는 AUTOCLIK을 시작 지점으로 사용합니다. 원본 AUTOCLIK 샘플과 혼동되지 않도록 새 GUID(Globally Unique Identifier)가 생성되고 ACDual 서버가 실행 중인지 여부를 명확히 하기 위해 일부 리소스 문자열이 변경되었습니다. 다른 모든 소스 변경 내용은 다음과 같이 주석 블록으로 표시됩니다.

      // DUAL_SUPPORT_START
      ... modified code goes here
      // DUAL_SUPPORT_END

이중 인터페이스, ODL(개체 설명 언어) 스크립트 및 자동화 오류 인터페이스에 대한 자세한 내용은 Technical Note 65를 참조하십시오.

이중 인터페이스

이중 인터페이스를 사용하여 IDispatch 인터페이스 또는 VTBL 인터페이스를 구현할 수 있습니다. 노출된 모든 자동화 개체에 대해 이중 인터페이스를 사용하는 것이 좋습니다. 이중 인터페이스를 구현할 때 고려할 여러 가지 문제점들을 Technical Note 65에서 설명하며, 다음 내용을 포함합니다.

  • CCmdTarget 기반 클래스에 대한 이중 인터페이스 지원 구현

  • 이중 인터페이스 포인터 전달

  • 다음을 포함하여 형식이 안전한 바인딩 사용

    • 응용 프로그램의 라이브러리 형식 등록

    • 형식 라이브러리 변경 내용에 맞도록 프로젝트 빌드 설정 수정

    • 형식 라이브러리에서 올바른 개체 클래스 이름 지정

  • 예외 및 자동화 오류 인터페이스 처리

자세한 내용은 ActiveX 항목 Overview of Automation, Dual Interfaces, Overview of Type Description Interfacesdual 특성의 ODL 참조 엔트리를 참조하십시오.

참고:

이 샘플을 비롯한 일부 샘플은 Visual C++ 마법사, 라이브러리 및 컴파일러의 변경 내용을 반영하도록 수정되지 않았지만 해당 작업의 수행 방법을 보여 줍니다.

키워드

ACDual 샘플에서는 다음 키워드를 설명합니다.

AfxMessageBox; AfxOleInit; AfxOleLockApp; AfxOleUnlockApp; CCmdTarget::EnableAutomation; CCmdTarget::FromIDispatch; CCmdTarget::GetIDispatch; CCmdTarget::OnFinalRelease; CControlBar::EnableDocking; CControlBar::GetBarStyle; CControlBar::SetBarStyle; CDialog::DoModal; CDocument::GetFirstViewPosition; CDocument::GetNextView; CDocument::OnNewDocument; CDocument::SetModifiedFlag; CDocument::UpdateAllViews; CFrameWnd::ActivateFrame; CFrameWnd::DockControlBar; CFrameWnd::EnableDocking; CFrameWnd::LoadFrame; CObject::AssertValid; CObject::Dump; CObject::IsKindOf; CObject::Serialize; COleTemplateServer::ConnectTemplate; COleTemplateServer::UpdateRegistry; CStatusBar::Create; CStatusBar::SetIndicators; CToolBar::Create; CView::DoPreparePrinting; CView::GetDocument; CView::OnBeginPrinting; CView::OnDraw; CView::OnEndPrinting; CView::OnPreparePrinting; CWinApp::AddDocTemplate; CWinApp::EnableShellOpen; CWinApp::InitInstance; CWinApp::LoadStdProfileSettings; CWinApp::RegisterShellFileTypes; CWnd::DoDataExchange; CWnd::GetParentFrame; CWnd::OnCreate; CWnd::OnLButtonDown; CWnd::PreCreateWindow; CWnd::ShowWindow; CWnd::UpdateWindow; DragAcceptFiles; ShowWindow; TextOut

ACDualDriv에서는 다음 키워드를 설명합니다.

AfxGetApp; AfxMessageBox; AfxOleInit; CDC::DrawIcon; CDC::GetSafeHdc; CDialog::DoModal; CDialog::EndDialog; COleDispatchDriver::AttachDispatch; COleDispatchDriver::GetProperty; COleDispatchDriver::InvokeHelper; COleDispatchDriver::SetProperty; CRect::Height; CRect::Width; CWinApp::InitInstance; CWinApp::LoadStdProfileSettings; CWnd::DoDataExchange; CWnd::GetClientRect; CWnd::IsIconic; CWnd::OnClose; CWnd::OnCreate; CWnd::OnPaint; CWnd::OnQueryDragIcon; CWnd::SendMessage; CWnd::ShowWindow; CWnd::UpdateData; GetSystemMetrics; LoadIcon; ShowWindow

참고 항목

기타 리소스

MFC 샘플