Sdílet prostřednictvím


ActiveX – kontejnery ovládacích prvků: Použití ovládacích prvků v jiném kontejneru než dialogovém okně

V některých aplikacích, jako je aplikace SDI nebo MDI, budete chtít vložit ovládací prvek do okna aplikace. Create member function of the wrapper class, inserted by Visual C++, can create an instance of the control dynamicky, without the need for a dialog box.

Členová funkce Create má následující parametry:

lpszWindowName
Ukazatel na text, který se má zobrazit ve vlastnosti Text nebo Titulek ovládacího prvku (pokud existuje).

dwStyle
Styly Windows. Úplný seznam naleznete v tématu CWnd::CreateControl.

Rect
Určuje velikost a umístění ovládacího prvku.

pParentWnd
Určuje nadřazené okno ovládacího prvku, obvykle .CDialog Nesmí mít hodnotu NULL.

Nid
Určuje ID ovládacího prvku a kontejner ho může použít k odkaz na ovládací prvek.

Jedním z příkladů použití této funkce k dynamickému vytvoření ovládacího prvku technologie ActiveX by bylo ve formulářovém zobrazení aplikace SDI. Pak můžete vytvořit instanci ovládacího prvku v WM_CREATE obslužné rutině aplikace.

V tomto příkladu CMyView je třída hlavního zobrazení, CCirc je třída obálky a CIRC. H je záhlaví (. H) soubor třídy wrapper.

Implementace této funkce je čtyřstupňový proces.

Dynamické vytvoření ovládacího prvku technologie ActiveX v okně bez dialogového okna

  1. Vložte CIRC. H v CMYVIEW. H, těsně před definicí CMyView třídy:

    #include "circ.h"
    
  2. Přidejte členovou proměnnou (typu CCirc) do chráněné části CMyView definice třídy umístěné v CMYVIEW. H:

    class CMyView : public CView
    {
    
    protected:
    CCirc m_myCtl;
    
    public:
    afx_msg void OnViewCircdlg();
    }
    ;
    
  3. Přidání obslužné rutiny WM_CREATE zprávy do třídy CMyView.

  4. Ve funkci CMyView::OnCreateobslužné rutiny proveďte volání funkce ovládacího prvku Create pomocí this ukazatele jako nadřazeného okna:

    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;
    }
    
  5. Znovu sestavte projekt. Ovládací prvek Circ se vytvoří dynamicky při každém vytvoření zobrazení aplikace.

Viz také

ActiveX – kontejnery ovládacích prvků