다음을 통해 공유


방법: 대화 상자 리소스의 ActiveX 컨트롤 호스팅

업데이트: 2007년 11월

Visual Studio를 사용하여 장치용 ActiveX 컨트롤을 디자인할 때는 몇 단계를 더 추가해야 합니다. 리소스 편집기에서는 디자인 타임에 데스크톱 컴퓨터에 등록 중인 컨트롤을 사용하여 컨트롤을 조작합니다. 또한 데스크톱 컴퓨터에는 장치 컨트롤을 등록할 수 없습니다. 다음 단계는 대체 디자인 타임 환경을 제공합니다. 다음 절차에서는 ActiveX 컨트롤 프로젝트와 호스트 프로젝트가 이미 있고 대화 상자에서 ActiveX 컨트롤을 호스팅하고 있다고 가정합니다.

참고:

다음 지침처럼 컴퓨터에서 Visual Studio 사용자 인터페이스 요소 일부에 대한 이름이나 위치를 다르게 표시할 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 Visual Studio 설정을 참조하십시오.

대화 상자 편집기를 사용하여 ActiveX 컨트롤을 추가하려면

  1. 대화 상자 편집기에서 호스트 프로젝트의 대화 상자를 엽니다.

  2. 도구 상자에서 사용자 지정 컨트롤을 대화 상자로 끌어 옵니다.

  3. ActiveX 컨트롤이 표시될 방식에 맞게 사용자 지정 컨트롤을 대화 상자에 배치하고 크기를 조정합니다.

  4. 사용자 지정 컨트롤을 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다.

  5. Class 속성에 ActiveX 컨트롤의 GUID를 붙여넣습니다. 이때 중괄호 "{…}"도 포함해야 합니다.

  6. 솔루션 탐색기에서 Project Name.RC2 파일을 마우스 오른쪽 단추로 클릭한 다음 코드 보기를 클릭합니다.

  7. 여기에 수동으로 편집한 리소스를 추가합니다. 섹션에서 다음 코드를 추가합니다. 사용자 지정 컨트롤을 올바르게 표시하려면 대화 상자 init 섹션이 있어야 합니다. 실제 대화 상자 init 섹션의 내용은 사용되지 않습니다. <project name>은 해당 프로젝트 이름으로 대체합니다.

    IDD_<project name>_DIALOG DLGINIT BEGIN IDC_CUSTOM1, 0x376, 22, 0 0x0000, 0x0000, 0x0800, 0x0000, 0x094d, 0x0000, 0x043d, 0x0000, 0x0013, 0xcdcd, 0xcdcd, 0
    
  8. 호스트 프로젝트를 빌드하여 실행합니다. 대상 장치에 ActiveX 컨트롤을 배포하고 등록합니다.

ActiveX 컨트롤을 호스팅하기 위한 대체 방법을 사용하려면

  1. 응용 프로그램의 특정 시점에서 AtlAxWinInit를 호출하여 AtlAxWin80 창 클래스를 등록합니다.

    ATL 응용 프로그램은 모듈 초기화 코드에서 이 작업을 수행합니다. Win32 응용 프로그램은 WinMain 함수에서 이 함수를 호출해야 합니다. MFC 응용 프로그램의 경우에는 다음 단계를 수행합니다.

    1. 솔루션 탐색기에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 클래스를 클릭합니다.

    2. 스마트 장치 머리글 아래의 MFC에 ATL 지원 추가를 클릭합니다.

    3. 호스트 응용 프로그램 클래스의 InitInstance 메서드 위쪽에 AtlAxWinInit 호출을 추가합니다.

  2. ATL 대화 상자나 복합 컨트롤 또는 MFC 대화 상자와 같은 대화 상자 리소스에서 다음을 수행합니다.

    1. 도구 상자에서 사용자 지정 컨트롤을 끌어 옵니다.

    2. 창 클래스 속성을 AtlAxWin80으로 설정합니다.

    3. 캡션을 중괄호로 묶은 GUID나 progid로 설정합니다.

  3. MFC의 경우 atl.lib를 추가 링크 입력으로 추가합니다.

  4. MFC의 경우 배포 | 추가 파일 옵션에 다음 줄을 추가합니다. 동적 링크 라이브러리의 경우 다음 줄이 이미 있지만 정적으로 링크된 MFC 라이브러리의 경우에는 추가해야 합니다.

    msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\$(ProjectName)|0
    atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\$(ProjectName)|0
    msvcr80d.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\$(ProjectName)|0
    

참고 항목

기타 리소스

Visual C++를 사용한 장치 프로그래밍