Kontenery kontrolek ActiveX: używanie kontrolek w kontenerze innym niż okno dialogowe
W niektórych aplikacjach, takich jak aplikacja SDI lub MDI, należy osadzić kontrolkę w oknie aplikacji. Funkcja Create member klasy otoki wstawiona przez program Visual C++może dynamicznie utworzyć wystąpienie kontrolki bez konieczności korzystania z okna dialogowego.
Funkcja Create member ma następujące parametry:
lpszWindowName
Wskaźnik do tekstu, który ma być wyświetlany we właściwości Text lub Caption kontrolki (jeśli istnieje).
Dwstyle
Style systemu Windows. Aby uzyskać pełną listę, zobacz CWnd::CreateControl.
Rect
Określa rozmiar i położenie kontrolki.
pParentWnd
Określa okno nadrzędne kontrolki, zwykle CDialog
. Nie może mieć wartości NULL.
Nid
Określa identyfikator kontrolki i może być używany przez kontener do odwoływania się do kontrolki.
Jednym z przykładów użycia tej funkcji do dynamicznego tworzenia kontrolki ActiveX jest widok formularza aplikacji SDI. Następnie można utworzyć wystąpienie kontrolki w WM_CREATE
procedurze obsługi aplikacji.
W tym przykładzie CMyView
jest to klasa widoku głównego, CCirc
to klasa otoki i CIRC. H to nagłówek (. H) plik klasy otoki.
Implementowanie tej funkcji jest procesem czteroetapowym.
Aby dynamicznie utworzyć kontrolkę ActiveX w oknie spoza okna dialogowego
Wstaw CIRC. H w programie CMYVIEW. H, tuż przed definicją
CMyView
klasy:#include "circ.h"
Dodaj zmienną składową (typu
CCirc
) do chronionej sekcji definicji klasy znajdującejCMyView
się w programie CMYVIEW. H:class CMyView : public CView {
protected: CCirc m_myCtl; public: afx_msg void OnViewCircdlg(); } ;
Dodaj procedurę obsługi komunikatów
WM_CREATE
do klasyCMyView
.W funkcji
CMyView::OnCreate
obsługi wykonaj wywołanie funkcji kontrolkiCreate
przy użyciuthis
wskaźnika jako okna nadrzędnego: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; }
Ponownie skompiluj projekt. Kontrolka Circ zostanie utworzona dynamicznie po utworzeniu widoku aplikacji.