Udostępnij za pośrednictwem


Pojemniki formantu ActiveX: Programowanie formantów ActiveX w pojemniku formantu ActiveX

W tym artykule opisano proces uzyskiwania dostępu do narażonych metody i Właściwości osadzone formantów ActiveX.Będzie zasadniczo, wykonaj następujące kroki:

  1. Wstawianie formantu ActiveX w programie project kontenera ActiveX za pomocą Galerii.

  2. Zdefiniować zmienną (lub innych form dostępu) tego samego typu jak ActiveX kontroli klasy otoki.

  3. Formant ActiveX programu przy użyciu wstępnie zdefiniowane funkcje składowe klasy otoki.

Dla tej dyskusji założono, że projekt na okno dialogowe (o nazwie pojemnika) został utworzony z obsługi formantów ActiveX.Okólnik próbki kontrolnej, okólnik, zostanie dodany do projektu wynikowy.

Po kontroli okólnik jest wstawiany do projektu (krok 1), należy wstawić wystąpienia formantu okólnik w głównym oknie dialogowym aplikacji.

Procedury

Aby dodać formant okólnik do szablonu okno dialogowe

  1. Załadować projekt kontenera formantu ActiveX.Na przykład użyj Container projektu.

  2. Kliknij kartę Widok zasobów.

  3. Otwórz okno dialogowe folder.

  4. Dwukrotnie kliknij szablon, okno główne okno dialogowe.Na przykład użyj IDD_CONTAINER_DIALOG.

  5. Kliknij ikonę kontroli okólnik w przyborniku.

  6. Kliknij przycisk miejscu w oknie dialogowym, aby wstawić formant okólnik.

  7. Z pliku menu, wybierz polecenie Zapisz wszystkie do zapisania wszystkich zmian do szablonu pola okna dialogowego.

Zmiany do projektu

Aby umożliwić dostęp do formantu okólnik aplikacji kontenera, Visual C++ automatycznie dodaje klasy otoki (CCirc) pliku implementacji (.CPP) do kontenera projektu i nagłówek klasy otoki (.H) plik do okna dialogowego pole nagłówka:

#include "circ.h"

Nagłówek klasy otoki (.H) plik

Pobierz i ustawić właściwości (i wywoływać metody) dla formantu okólnik CCirc klasy otoki zawiera deklarację wszystkich narażonych metod i właściwości.Na przykład deklaracje te znajdują się w okólnikH.Następujące próbki jest częścią klasy CCirc , definiująca interfejsów formantu ActiveX:

class CCirc : public CWnd
{


...


// Functions
//

   void AboutBox()
   {
      InvokeHelper(DISPID_ABOUTBOX, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
   }

// Properties
//

   unsigned long GetBackColor()
   {
      unsigned long result;
      GetProperty(DISPID_BACKCOLOR, VT_UI4, (void*)&result);
      return result;
   }
   void SetBackColor(unsigned long propVal)
   {
      SetProperty(DISPID_BACKCOLOR, VT_UI4, propVal);
   }
   signed char GetCircleShape()
   {
      signed char result;
      GetProperty(0x1, VT_I1, (void*)&result);
      return result;
   }
   void SetCircleShape(signed char propVal)
   {
      SetProperty(0x1, VT_I1, propVal);
   }
   short GetCircleOffset()
   {
      short result;
      GetProperty(0x3, VT_I2, (void*)&result);
      return result;
   }
   void SetCircleOffset(short propVal)
   {
      SetProperty(0x3, VT_I2, propVal);
   }
   CString GetCaption()
   {
      CString result;
      GetProperty(DISPID_CAPTION, VT_BSTR, (void*)&result);
      return result;
   }
   void SetCaption(CString propVal)
   {
      SetProperty(DISPID_CAPTION, VT_BSTR, propVal);
   }
   COleFont GetFont()
   {
      LPDISPATCH result;
      GetProperty(DISPID_FONT, VT_DISPATCH, (void*)&result);
      return COleFont(result);
   }
   void SetFont(LPDISPATCH propVal)
   {
      SetProperty(DISPID_FONT, VT_DISPATCH, propVal);
   }
   unsigned long GetForeColor()
   {
      unsigned long result;
      GetProperty(DISPID_FORECOLOR, VT_UI4, (void*)&result);
      return result;
   }
   void SetForeColor(unsigned long propVal)
   {
      SetProperty(DISPID_FORECOLOR, VT_UI4, propVal);
   }
   CString GetNote()
   {
      CString result;
      GetProperty(0x4, VT_BSTR, (void*)&result);
      return result;
   }
   void SetNote(CString propVal)
   {
      SetProperty(0x4, VT_BSTR, propVal);
   }
   unsigned long GetFlashColor()
   {
      unsigned long result;
      GetProperty(0x2, VT_UI4, (void*)&result);
      return result;
   }
   void SetFlashColor(unsigned long propVal)
   {
      SetProperty(0x2, VT_UI4, propVal);
   }
};

Funkcje te następnie może być wywołana z innych procedur aplikacji przy użyciu normalnych składni języka C++.Aby uzyskać więcej informacji na temat używania tej funkcji składowej Ustaw dostęp do metod i właściwości formantu, zobacz sekcję programowania formantu ActiveX.

Członkowskie zmiennej modyfikacje projektu

Kiedy formant ActiveX został dodany do projektu i osadzone w kontenerze okno dialogowe, można dostęp do innych części projektu.Najprostszym sposobem kontroli dostępu jest utworzyć zmienną klasy okno dialogowe CContainerDlg (krok 2), to znaczy tego samego typu jak klasy otoki dodawany do projektu w Visual C++.Zmienna członka można następnie osadzony kontroli dostępu w dowolnym momencie.

Gdy Dodać zmienną okno dialogowe dodaje m_circctl Członkowskich zmiennej do projektu również dodaje następujące wiersze do pliku nagłówka (.H) z CContainerDlg klasy:

class CContainerDlg : public CDialog
{
   DECLARE_DYNAMIC(CContainerDlg)

public:
   CContainerDlg(CWnd* pParent = NULL);   // standard constructor
   virtual ~CContainerDlg();

   virtual void OnFinalRelease();

// Dialog Data
   enum { IDD = IDD_CONTAINER_DIALOG };

protected:
   virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

   DECLARE_MESSAGE_MAP()
   DECLARE_DISPATCH_MAP()
   DECLARE_INTERFACE_MAP()
public:
   CCirc m_circctl;


...


};

Ponadto, wywołanie do DDX_Control jest automatycznie dodawany do CContainerDlgw realizacji DoDataExchange:

DDX_Control(pDX, IDC_CIRCCTRL1, m_circctl);

Programowania formantu ActiveX

W tym momencie mieć wstawiony formant ActiveX szablonu okno dialogowe i utworzona zmienna członka.Dostęp do właściwości i metod kontroli osadzony teraz służy wspólnej składni języka C++.

Jak zauważono (w Nagłówek klasy otoki (.H) pliku), pliku nagłówka (.H) dla CCirc klasy otoki, w tym przypadku okólnikH, zawiera listę funkcji elementów członkowskich, które można użyć do uzyskania i wartość właściwości narażonych.Funkcji elementów członkowskich dla metod narażone są również dostępne.

Wspólne miejsce, aby zmodyfikować właściwości formantu jest w OnInitDialog funkcji składowej klasy głównego okna dialogowego.Funkcja ta jest wywoływana tuż przed okno dialogowe pojawia się i jest używany do zainicjowania jego zawartość, łącznie z jego formantów.

Następujący kod w przykładzie wykorzystano m_circctl zmienną do modyfikowania właściwości Caption i CircleShape osadzony formant okólnik:

BOOL CContainerDlg::OnInitDialog()
{
   CDialog::OnInitDialog();

   m_circctl.SetCaption(_T("Circ 2 Control"));
   if(!m_circctl.GetCircleShape())
      m_circctl.SetCircleShape(TRUE);

   return TRUE;  // return TRUE unless you set the focus to a control
}

Zobacz też

Koncepcje

Pojemniki formantu ActiveX