MFC-ActiveX-Steuerelemente: Erstellen eines Automatisierungsservers

Sie können ein MFC-ActiveX-Steuerelement mit Automatisierungsserver entwickeln, mit dem Ziel programmgesteuert einbetten dass das Steuerelement in einer anderen Anwendung und Aufrufen von Methoden im Steuerelement aus der Anwendung.Ein solches Steuerelement würde weiterhin verfügbar sein, in einem ActiveX-Steuerelement-Container gehostet werden soll.

So erstellen Sie ein Steuerelement als Automatisierungsserver

  1. Erstellen das Steuerelement.

  2. Fügen Sie Methoden hinzu.

  3. Überschreiben IsInvokeAllowed.Weitere Informationen finden Sie im Artikel Q146120 der Knowledge Base (nur auf Englisch verfügbar).

  4. Erstellen Sie das Steuerelement.

Um die Methoden greifen Sie programmgesteuert einen Automatisierungsserver

  1. Erstellen Sie eine Anwendung z. B. MFC EXE-Datei

  2. Zu Beginn der InitInstance-Funktion fügen Sie die folgende Zeile hinzu:

    AfxOleInit();
    
  3. Klicken Sie in der Klassenansicht mit der rechten Maustaste auf den Projektknoten, und Klasse aus typelib hinzufügen auswählen, um die Typbibliothek importiert werden sollen.

    Dies fügt Dateien mit den Dateinamenerweiterungen .cpp und .h dem Projekt hinzu.

  4. In der Headerdatei der Klasse, in der Sie eine oder mehrere Methoden im ActiveX-Steuerelement aufrufen, fügen Sie die folgende Zeile hinzu: #include filename.h, wo Dateiname den Namen der Headerdatei befindet, die erstellt wurde, als Sie die Typbibliothek importiert haben.

  5. In der Funktion, in der ein Aufruf einer Methode im ActiveX-Steuerelement erklärt wird, fügen Sie den Code, der ein Objekt der Wrapperklasse des Steuerelements hinzu und erstellen Sie das erstellte ActiveX-Objekt.Instanziieren Sie beispielsweise die folgende MFC-Code ein CCirc-Steuerelement ruft die Caption-Eigenschaft ab und zeigt das Ergebnis, wenn auf die Schaltfläche OK geklickt in einem Dialogfeld wird:

    void CCircDlg::OnOK()
    {
       UpdateData();   // Get the current data from the dialog box.
       CCirc2 circ;    // Create a wrapper class for the ActiveX object.
       COleException e;   // In case of errors
    
       // Create the ActiveX object. 
       // The name is the control's progid; look it up using OleView
       if (circ.CreateDispatch(_T("CIRC.CircCtrl.1"), &e)) 
       {
          // get the Caption property of your ActiveX object
          // get the result into m_strCaption
          m_strCaption = circ.GetCaption();
          UpdateData(FALSE);   // Display the string in the dialog box.
       }
       else   { // An error
          TCHAR buf[255];
          e.GetErrorMessage(buf, sizeof(buf) / sizeof(TCHAR));
          AfxMessageBox(buf);   // Display the error message.
       }
    }
    

Wenn Sie Methoden dem ActiveX-Steuerelement hinzufügen, nachdem Sie es in einer Anwendung verwenden, können Sie mithilfe der neuesten Version des Steuerelements in der Anwendung starten, indem Sie die Dateien löschen, die erstellt wurden, als Sie die Typbibliothek importiert haben.Importieren Sie dann die Typbibliothek erneut.

Siehe auch

Konzepte

MFC-ActiveX-Steuerelemente