다음을 통해 공유


대화 상자가 아닌 컨테이너에서 컨트롤을 사용 하 여 ActiveX 컨트롤 컨테이너:

SDI와 같은 응용 프로그램 또는 MDI 응용 프로그램에서 응용 프로그램의 창에 컨트롤을 포함 합니다.만들기 Visual C++에서 삽입 하는 래퍼 클래스의 멤버 함수 만들 수 있습니다는 컨트롤의 인스턴스를 동적으로 대화 상자에 대 한 필요 없이.

만들기 멤버 함수는 다음 매개 변수를 포함 합니다.

  • lpszWindowName
    (있는 경우) 해당 컨트롤의 텍스트 또는 캡션 속성을 표시 하는 텍스트에 대 한 포인터입니다.

  • dwStyle
    창 스타일입니다.전체 목록을 보려면을 참조 하십시오. CWnd::CreateControl.

  • rect
    컨트롤의 크기와 위치를 지정합니다.

  • pParentWnd
    일반적으로 컨트롤의 부모 창에 지정 된 CDialog.다시 해야 NULL.

  • nID
    컨트롤 ID를 지정 하 고 컨테이너에서 사용 하 여 컨트롤을 참조할 수 있습니다.

하나의 예는 ActiveX 컨트롤을 동적으로 만들려면이 함수를 사용 하 여 SDI 응용 프로그램의 폼 보기에서 수 있습니다.다음 컨트롤의 인스턴스를 만들 수 있는 WM_CREATE 응용 프로그램의 처리기입니다.

이 예제에서 CMyView 주 보기 클래스인 CCirc 래퍼 클래스 이며 가변 원형H 헤더입니다 (.H) 파일의 래퍼 클래스입니다.

이 기능을 구현 하는 4 단계 프로세스입니다.

대화 상자가 아닌 창에서 있는 ActiveX 컨트롤을 동적으로 만들려면

  1. 가변 원형 삽입CMYVIEW에 H입니다.H, 방금 전에 CMyView 클래스 정의:

    #include "circ.h"
    
  2. 멤버 변수를 추가 (형식의 CCirc)의 보호 된 섹션의 CMyView 클래스 정의에서 CMYVIEW 위치한.H:

    class CMyView : public CView
    {
    
    
    ...
    
    
    protected:
       CCirc m_myCtl;
    public:
       afx_msg void OnViewCircdlg();
    };
    
  3. 추가 된 WM_CREATE 메시지 처리기를 클래스에 CMyView.

  4. 처리기 함수에서 CMyView::OnCreate, 호출 하는 컨트롤의 Create 함수를 사용 하는 부모 창으로 포인터:

    int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
       if (CView::OnCreate(lpCreateStruct) == -1)
          return -1;
    
       m_myCtl.Create(NULL, WS_VISIBLE, CRect(50,50,100,100), this, 0);
       m_myCtl.SetCaption(_T("Control created"));
    
       return 0;
    }
    
  5. 프로젝트를 다시 빌드합니다.응용 프로그램의 뷰가 만들어질 때마다 Circ 컨트롤이 동적으로 만들어집니다.

참고 항목

개념

ActiveX 컨트롤 컨테이너