Sdílet prostřednictvím


ActiveX – kontejnery ovládacích prvků: Programování ovládacích prvků ActiveX v kontejneru ovládacího prvku ActiveX

Tento článek popisuje postup pro přístup ohrožené metody a Vlastnosti vložených ovládacích prvků ActiveX.Bude v podstatě, postupujte takto:

  1. Vložení ovládacího prvku ActiveX v kontejneru ActiveX projektu pomocí galerie.

  2. Definovat členské proměnné (nebo jiné formy přístupu) stejného typu jako ActiveX obálkovou třídu ovládacího prvku.

  3. Programování ovládacího prvku ActiveX pomocí předdefinované funkce členů třídy obálky.

Pro tuto diskusi Předpokládejme, že jste vytvořili projekt založený na dialogu (s názvem kontejneru) s podporu ovládacích prvků ActiveX.Kontrolu vzorku Kula, Kula, bude přidán do výsledný projekt.

Jakmile Kula ovládacího prvku vložena do projektu (krok 1), vložte do dialogové okno aplikace hlavní instanci ovládacího prvku Kula.

Procedury

Do dialogového okna šablony přidejte ovládací prvek Kula

  1. Načtěte projekt kontejneru ovládacího prvku ActiveX.Tento příklad použití Container projektu.

  2. Klepněte na záložkuZobrazení Zdrojů.

  3. Otevřít Dialog složky.

  4. Poklepejte na šablonu pole hlavního dialogového okna.V tomto příkladu pomocí IDD_CONTAINER_DIALOG.

  5. Klepněte na ikonu Kula ovládací prvek na panelu nástrojů.

  6. Klepněte na místo v dialogovém okně Vložit ovládací prvek Kula.

  7. Z souboru nabídky, zvolte Uložit všechny Chcete-li uložit všechny změny šablony dialogové okno pole.

Změny v projektu

Povolit aplikaci kontejneru pro přístup k ovládacímu prvku Kula, Visual C++ přidá obálkovou třídu (CCirc) implementace souboru (.CPP) do kontejneru projektu a záhlaví třídy obálky (.H) souboru do souboru dialogové okno pole záhlaví:

#include "circ.h"

Záhlaví třídy obálky (.H) soubor

K získání a nastavení vlastností (a volat metody) pro kontrolu Kula, CCirc Obálková třída obsahuje prohlášení všech vystavených metod a vlastností.V příkladu tato prohlášení jsou součástí mscH.Následující příklad je část třídy CCirc definující vystavovaných rozhraní ovládacího prvku 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);
   }
};

Tato funkce může být volána z jiné postupy aplikace pomocí normální syntaxe jazyka C++.Další informace o použití této funkce člena umožnit přístup k vlastnosti a metody ovládacího prvku, naleznete v části programování ovládacího prvku ActiveX.

Členské proměnné změny v projektu

Jakmile byla přidána do projektu a vložené v dialogovém okně pole kontejner ovládacího prvku ActiveX, lze přistupovat z jiných částí projektu.Nejjednodušší přístup k ovládacímu prvku je vytvořit členské proměnné třídy dialogové okno CContainerDlg (krok 2), který je stejného typu jako Obálková třída přidána do projektu Visual c++.Členské proměnné pak můžete přístup kdykoli vložený ovládací prvek.

Když Přidat členskou proměnnou přidá dialogové okno m_circctl členské proměnné pro projekt, také přidá následující řádky do souboru hlaviček (.H) ze CContainerDlg třídy:

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;


...


};

Kromě toho, volání DDX_Control je automaticky přidán do CContainerDlgna provádění DoDataExchange:

DDX_Control(pDX, IDC_CIRCCTRL1, m_circctl);

Programování ovládacího prvku ActiveX

V tomto okamžiku můžete vložit ovládací prvek ActiveX do šablony dialogové okno a vytvořen členské proměnné.Společné syntaxe C++ můžete nyní získat přístup k vlastnosti a metody ovládacího prvku vloženého.

Jak již bylo uvedeno (v záhlaví třídy obálky (.Soubor H)), soubor hlaviček (.H) u CCirc obálkovou třídu, v tomto případě mscH, obsahuje seznam členských funkcí, které vám pomohou získat a nastavit hodnotu jakékoli vlastnosti vystavené.Členské funkce pro exponované metody jsou také k dispozici.

Společné místo, chcete-li změnit vlastnosti ovládacího prvku OnInitDialog členské funkce třídy hlavní dialogové okno.Tato funkce je volána před se zobrazí dialogové okno a slouží k inicializaci její obsah, včetně všech jeho ovládacích prvků.

Následující příklad kódu používá m_circctl členské proměnné změnit vlastnosti vloženého ovládacího prvku Kula titulek a CircleShape:

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
}

Viz také

Koncepty

ActiveX – kontejnery ovládacích prvků