Aracılığıyla paylaş


ActiveX Denetim Kapsayıcıları: Bir ActiveX Denetim Kapsayıcısındaki ActiveX Denetimlerini Programlama

Bu makalede, eklenen ActiveX denetimlerinin kullanıma sunulan yöntemlerine ve özelliklerine erişme işlemi açıklanmaktadır.

Önemli

ActiveX, yeni geliştirme için kullanılmaması gereken eski bir teknolojidir. ActiveX'in yerine geçen modern teknolojiler hakkında daha fazla bilgi için bkz . ActiveX Denetimleri.

Temel olarak, şu adımları izleyeceksiniz:

  1. Galeri'yi kullanarak ActiveX kapsayıcı projesine bir ActiveX denetimi ekleyin.

  2. ActiveX denetim sarmalayıcı sınıfıyla aynı türde bir üye değişkeni (veya başka bir erişim biçimi) tanımlayın.

  3. Sarmalayıcı sınıfının önceden tanımlanmış üye işlevlerini kullanarak ActiveX denetimini programlayın.

Bu tartışma için, ActiveX denetim desteğine sahip bir iletişim kutusu tabanlı proje (Kapsayıcı adlı) oluşturduğunuzu varsayalım. Circ örnek denetimi Circ, sonuçta elde edilen projeye eklenir.

Circ denetimi projeye eklendikten sonra (1. adım), uygulamanın ana iletişim kutusuna Circ denetiminin bir örneğini ekleyin.

Yordamlar

İletişim kutusu şablonuna Circ denetimini eklemek için

  1. ActiveX denetim kapsayıcısı projesini yükleyin. Bu örnekte projeyi kullanın Container .

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

  3. İletişim Kutusu klasörünü açın.

  4. Ana iletişim kutusu şablonuna çift tıklayın. Bu örnekte IDD_CONTAINER_DIALOG kullanın.

  5. Araç Kutusu'nda Circ denetimi simgesine tıklayın.

  6. Circ denetimini eklemek için iletişim kutusunun içindeki bir noktaya tıklayın.

  7. Dosya menüsünde Tümünü Kaydet'i seçerek tüm değişiklikleri iletişim kutusu şablonuna kaydedin.

Projede Yapılan Değişiklikler

Kapsayıcı uygulamasının Circ denetimine erişmesini sağlamak için Visual C++ sarmalayıcı sınıfını () uygulama dosyasını (CCirc otomatik olarak ekler. CPP) kapsayıcı projesine ve sarmalayıcı sınıf üst bilgisine (. H) dosyasını iletişim kutusu üst bilgi dosyasına ekleyin:

#include "circ.h"

Sarmalayıcı Sınıf Üst Bilgisi (. H) Dosyası

Circ denetiminin özelliklerini almak ve ayarlamak (ve yöntemleri çağırmak) için sarmalayıcı sınıfı, CCirc kullanıma sunulan tüm yöntemlerin ve özelliklerin bildirimini sağlar. Örnekte, bu bildirimler CIRC.H dosyasında bulunur. Aşağıdaki örnek, sınıfın CCirc ActiveX denetiminin kullanıma sunulan arabirimlerini tanımlayan bölümüdür:

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 daha sonra normal C++ söz dizimi kullanılarak uygulamanın diğer yordamlarından çağrılabilir. Denetimin yöntemlerine ve özelliklerine erişmek için bu üye işlev kümesini kullanma hakkında daha fazla bilgi için ActiveX denetimini programlama bölümüne bakın.

Projede Üye Değişken Değişiklikleri

ActiveX denetimi projeye eklendikten ve bir iletişim kutusu kapsayıcısına eklendikten sonra, bu denetime projenin diğer bölümleri tarafından erişilebilir. Denetime erişmenin en kolay yolu, CContainerDlg Visual C++ tarafından projeye eklenen sarmalayıcı sınıfıyla aynı türde bir iletişim kutusu sınıfının üye değişkenini (2. adım) oluşturmaktır. Daha sonra üye değişkenini kullanarak ekli denetime istediğiniz zaman erişebilirsiniz.

Üye Değişkeni Ekle iletişim kutusu m_circctl üye değişkenini projeye eklediğinde, üst bilgi dosyasına ( aşağıdaki satırları da ekler. H) sınıfı:CContainerDlg

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

Buna ek olarak, DDX_Control çağrısı 'nin uygulamasına CContainerDlgDoDataExchangeotomatik olarak eklenir:

DDX_Control(pDX, IDC_CIRCCTRL1, m_circctl);

ActiveX Denetimini Programlama

Bu noktada, iletişim kutusu şablonunuz içine ActiveX denetimini eklediniz ve bunun için bir üye değişkeni oluşturdunuz. Artık eklenmiş denetimin özelliklerine ve yöntemlerine erişmek için ortak C++ söz dizimini kullanabilirsiniz.

Belirtildiği gibi (Sarmalayıcı Sınıf Üst Bilgisinde (. H) Dosyası), üst bilgi dosyası (. H) sarmalayıcı sınıfı için CCirc , bu örnekte CIRC. H, kullanıma sunulan özellik değerlerini almak ve ayarlamak için kullanabileceğiniz üye işlevlerin listesini içerir. Kullanıma sunulan yöntemler için üye işlevleri de kullanılabilir.

Denetimin özelliklerini değiştirmek için ortak bir yer, OnInitDialog ana iletişim kutusunun üye işlevidir. Bu işlev, iletişim kutusu görüntülenmeden hemen önce çağrılır ve denetimleri de dahil olmak üzere içeriğini başlatmak için kullanılır.

Aşağıdaki kod örneği, eklenmiş Circ denetiminin Caption ve CircleShape özelliklerini değiştirmek için m_circctl üye değişkenini kullanır:

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.

ActiveX Denetim Kapsayıcıları