SUBEDIT-Beispiel: Erstellt eine übergeordnete Klasse für ein Windows-Standardsteuerelement
Aktualisiert: November 2007
Das SUBEDIT-Beispiel demonstriert die Erstellung eines ATL-Steuerelements, das zu einem standardmäßigen Windows-Edit-Steuerelement eine übergeordnete Klasse erstellt.
Das Beispiel für SUBEDIT-Attribute ist die attributierte Version dieses Beispiels.
Sicherheitshinweis: |
---|
Dieser Beispielcode dient dazu, ein Konzept zu veranschaulichen. Er sollte nicht für Anwendungen oder Websites verwendet werden, da dieser Code unter Umständen nicht die sicherste Codierungstechnik darstellt. Microsoft übernimmt keine Haftung für beiläufig entstandene Schäden oder Folgeschäden, falls der Beispielcode nicht bestimmungsgemäß verwendet wird. |
So rufen Sie Beispiele und Anweisungen für ihre Installation ab
Klicken Sie in Visual Studio im Menü Hilfe auf Beispiele.
Weitere Informationen finden Sie unter Suchen von Beispieldateien.
Die neueste Version und vollständige Liste mit Beispielen ist online unter Visual Studio 2008 Samples verfügbar.
Sie können auch Beispiele auf der Festplatte des Computers suchen. Standardmäßig werden Beispiele und eine Infodatei in einen Ordner unter \Programme\Visual Studio 9.0\Samples\ kopiert. Für Express Editions von Visual Studio sind alle Beispiele online verfügbar.
Erstellen und Ausführen des Beispiels
So erstellen Sie dieses Beispiel und führen es aus
Öffnen Sie die Projektmappendatei SubEdit.sln.
Klicken Sie im Menü Erstellen auf die Option Erstellen.
Nachdem das Beispiel erstellt ist, öffnen Sie im Webbrowser die Datei AtlEdit.htm und testen das Steuerelement.
Das Steuerelement kann im Testcontainer für ActiveX-Steuerelemente getestet werden, indem die ATLEdit-Klasse geöffnet wird. Ausführliche Informationen dazu, wie Sie auf den Testcontainer zugreifen und diesen zum Testen eines Steuerelements verwenden, finden Sie unter Testen von Eigenschaften und Ereignissen mit dem Testcontainer.
Erstellen einer übergeordneten Klasse für ein Windows-Steuerelement
ATL ermöglicht die Erstellung eines Steuerelements, das eine übergeordnete Klasse für ein standardmäßiges Windows-Steuerelement erstellt. Durch Erzeugen einer übergeordneten Klasse können Sie eine Fensterklasse erstellen, die auf einer bereits bestehenden Klasse basiert, jedoch eine andere Fensterprozedur verwendet. Anschließend erstellen Sie ein Fenster, das auf dieser neuen Fensterklasse basiert. Wenn Sie für ein Steuerelement eine übergeordnete Klasse erstellen, werden Meldungen zunächst von einer ATL-Meldungszuordnung verarbeitet und dann an die ursprüngliche Fensterprozedur des Steuerelements gesendet. Auf diese Weise können Sie das Standardverhalten von standardmäßigen Windows-Steuerelementen ändern.
Wenn Sie den ATL-Steuerelement-Assistenten zur Erstellung eines ActiveX-Steuerelements verwenden, haben Sie die Möglichkeit, ein Steuerelement basierend auf einer Standardfensterklasse hinzuzufügen. In diesem Fall fügt der Assistent eine Membervariable vom Typ CContainedWindow in die ActiveX-Steuerelementklasse ein. CContainedWindow::Create erstellt dann ein Fenster, das der von Ihnen angegebenen Fensterklasse übergeordnet ist. Das Fenster leitet seine Meldungen mithilfe von CContainedWindow::WindowProc durch eine Meldungszuordnung. Wenn eine Meldung weiter verarbeitet werden muss, wird sie an die ursprüngliche Fensterprozedur der Fensterklasse gesendet.
Überprüfen des SUBEDIT-Beispielcodes (AtlEdit.h)
Der Konstruktor für die CAtlEdit-Klasse legt für die m_bWindowOnly-Membervariable den Wert TRUE fest. Dadurch wird sichergestellt, dass das Steuerelement nie als fensterloses Steuerelement aktiviert wird.
Die CContainedWindow-Membervariable (m_EditCtrl) wird vom CAtlEdit-Konstruktur initialisiert. Der CContainedWindow-Konstruktor kann drei Parameter aufnehmen: den Namen der Fensterklasse, zu der eine übergeordnete Klasse erstellt werden soll (in diesem Fall "EDIT"); einen Zeiger auf die CAtlEdit-Klasse, die die Meldungszuordnung enthält, und den Bezeichner der Meldungszuordnung, die die m_EditCtrl-Meldungen verarbeiten wird. m_EditCtrl verwendet standardmäßig eine alternative Meldungszuordnung, die mit dem ALT_MSG_MAP-Makro deklariert wird.
Die Standardmeldungszuordnung deklariert die Namen der Handlerfunktionen für die an das CAtlEdit-Steuerelement gesendeten Meldungen WM_CREATE und WM_CTLCOLOREDIT. Der OnCreate-Handler ruft CContainedWindow::Create auf, um das m_EditCtrl-Fenster zu erstellen. Der OnCtlColorEdit-Handler legt für m_EditCtrl neue Farben für den Hintergrund und den Text fest.
Die alternative Meldungszuordnung deklariert eine Handlerfunktion für WM_CHAR-Meldungen, die an m_EditCtrl gesendet wurden. Dieser Handler akzeptiert nur Buchstaben (keine Sonderzeichen oder Zahlen) und übergibt dann die WM_CHAR-Meldung an die ursprüngliche Fensterprozedur, die von der Windows-Bearbeitungsklasse definiert wurde.
Schlüsselwörter
In diesem Beispiel werden die folgenden Schlüsselwörter verwendet:
CComCoClass; CComControl; CComModule::GetClassObject; CComModule::GetLockCount; CComModule::Init; CComModule::RegisterServer; CComModule::Term; CComModule::UnregisterServer; CComObjectRoot; CContainedWindow::DefWindowProc; DisableThreadLibraryCalls; GetStockObject; GetWindowRect; IDataObjectImpl; IDispatchImpl; IOleControlImpl; IOleInPlaceActiveObjectImpl; IOleInPlaceObjectWindowlessImpl; IOleInPlaceObjectWindowlessImpl::SetObjectRects; IOleObjectImpl; IPersistStorageImpl; IPersistStreamInitImpl; IProvideClassInfo2Impl; IQuickActivateImpl; ISpecifyPropertyPagesImpl; IViewObjectExImpl; SetBkColor; SetTextColor; SetWindowPos