Aracılığıyla paylaş


ActiveX denetimi kapsayıcıları: ActiveX denetimleri ActiveX denetimi kapsayıcısında programlama

Bu makalede, hem de sunulan erişme işlemi yöntemleri ve özellikleri katıştırılmış ActiveX denetimleri. Temel olarak, aşağıdaki adımları izler:

  1. ActiveX denetimi ActiveX kapsayıcısı projeye Ekle Galerisi'ni kullanma.

  2. Üye değişkeni tanımlayan (veya başka form erişim) aynı türde ActiveX denetimi sarmalayıcı sınıf.

  3. ActiveX denetimi programı öntanımlı sarmalayıcı sınıf üye işlevlerini kullanarak.

Bu tartışma için ActiveX denetimi desteği ile (kapsayıcı olarak adlandırılır) iletişim tabanlı proje oluşturmuş olduğunuz varsayılmaktadır. Elde edilen proje Circ, Circ örnek denetimi eklenir.

Circ denetim (adım 1) projeye eklendikten sonra uygulamanın ana iletişim kutusuna Circ denetimi örneğini yerleştirin.

Yordamlar

Circ denetimi iletişim şablonu eklemek için

  1. ActiveX denetimi kapsayıcı proje yüklenemedi. Örneğin, Container proje.

  2. Kaynak Görünümü sekmesine tıklayın.

  3. Açık iletişim klasörü.

  4. Ana iletişim kutusunda şablonu çift tıklatın. Örneğin, IDD_CONTAINER_DIALOG.

  5. Araç kutusundaki Circ denetimi simgesini tıklatın.

  6. Circ denetim eklemek için iletişim kutusu içinde bir noktayı tıklatın.

  7. Dan Dosya menüsünden seçin Tümünü Kaydet iletişim kutusunda şablonu tüm değişiklikleri kaydetmek için.

Proje değişiklikleri

Konteyner uygulaması Circ denetimine erişmek etkinleştirmek için Visual C++ otomatik sarmalayıcı sınıf ekler (CCirc) uygulaması dosya (.cpp) kapsayıcı proje ve sarmalayıcı sınıf başlığı (.h) iletişim kutusunda üstbilgi dosyası için dosya:

#include "circ.h"

Sarmalayıcı sınıf başlığı (.h) dosyası

Al ve özellikleri (ve yöntemlerini çağırmak için) Circ denetimi için CCirc sarmalayıcı sınıf bildirimi hem de sunulan tüm yöntemleri ve özellikleri sağlar. Örnekte, bu bildirimleri CIRC. içinde bulunanH. Aşağıdaki örnek sınıf bölümüdür. CCirc , ActiveX denetiminin arabirimleri tanımlar:

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);
   }
};

Bu işlevler, sonra diğer normal C++ sözdizimini kullanarak uygulamanın yordamlar çağrılabilir. Bölüm denetimin yöntemlerini ve özelliklerini erişmek için bu üye işlevi kullanma hakkında daha fazla bilgi için bkz: ActiveX denetimini programlamanın.

Projeye üye değişken değişiklikler

ActiveX denetimi projeye eklenen ve iletişim kutusunda kapsayıcı içinde katıştırılmış bir kez projenin diğer bölümleri tarafından erişilebilir. Erişim denetimi için en kolay yolu üye değişkeni oluşturma iletişim sınıfının CContainerDlg (, yani adım 2) tarafından Visual C++ projeye eklenen sarmalayıcı sınıf ile aynı türden. Daha sonra herhangi bir zamanda katıştırılmış denetime erişmek için üye değişkeni kullanabilirsiniz.

Zaman Üye değişken ekleyin iletişim kutusu ekler m_circctl üye değişkeni Project ayrıca aşağıdaki satırları üstbilgi dosyası ekler (.h), CContainerDlg sınıfı:

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;


...


};

Ayrıca, çağrı DDX_Control otomatik olarak eklenen CContainerDlg's uygulaması DoDataExchange:

DDX_Control(pDX, IDC_CIRCCTRL1, m_circctl);

ActiveX denetimi programlama

Bu noktada iletişim şablonunuza ActiveX denetimi eklenir ve üye değişkeni oluşturulduğu. Artık ortak C++ sözdizimi özellikleri ve katıştırılmış yöntemlerine erişmek için de kullanabilirsiniz.

Belirtildiği gibi (de sarmalayıcı sınıf üstbilgi (.h) dosya), üstbilgi dosyası (.h) için CCirc , bu durumda CIRC. sarmalayıcı sınıfH, alın ve tüm sunulma özellik değerini ayarlamak için kullanabileceğiniz üye işlevler listesini içerir. Üye işlevleri hem de sunulan yöntemleri için de kullanılabilir.

Denetimin özelliklerini değiştirmek için ortak bir yerde bulunan OnInitDialog ana iletişim sınıfının üye işlevi. Bu işlevi, yalnızca iletişim kutusu görüntülenir ve denetimlerinden birini de dahil olmak üzere, içeriğini başlatmak için kullanılan önce çağrılır.

Aşağıdaki kod örneği m_circctl üye değişkeni katıştırılmış Circ denetimi başlığını ve CircleShape özelliklerini değiştirmek için:

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
}

Ayrıca bkz.

Kavramlar

ActiveX denetimi kapsayıcılar