3 Stimmen

Wie erstellt man eine benutzerdefinierte Komponente und fügt sie zu einer dialogbasierten Anwendung (MFC) hinzu?

Ich möchte eine benutzerdefinierte Komponente (ein Liniendiagramm) erstellen, die in anderen Anwendungen verwendet werden soll.

Ich weiß 2 Dinge nicht:

  1. Wo sollte ich (innerhalb der Komponentenklasse!) die Methoden zum Zeichnen verwenden, wie FillRect

    oder PolyLine? In OnPaint Handler, die ich definieren sollte und ordnen Sie es in MESSAGE MAP? Wird

    er (OnPaint-Handler) wird vom OnPaint-Handler des Dialogs der Anwendung aufgerufen

    oder woher?

  2. Wie wird die Komponente nach ihrer Herstellung mit der Testanwendung verbunden, die

    zum Beispiel dialogbasiert sein? Wo sollte ich diese Komponente instanziieren? Von einer

    OnCreate-Methode der Datei MyAppDialog.cpp?

Ich habe vor ein paar Tagen angefangen, in MFC zu programmieren, und ich bin so verwirrt.

Vielen Dank im Voraus,

Zum Wohl.

0voto

Jerry Coffin Punkte 452852

Das Malen des Steuerelements wird genauso gehandhabt, wie wenn es sich nicht um ein Steuerelement handeln würde. Da Sie MFC verwenden, bedeutet das (zumindest normalerweise), dass Sie das Zeichnen in der View-Klasse durchführen. OnDraw (MFC behandelt OnPaint normalerweise intern, so dass Sie es nur selten berühren).

Das Einfügen des resultierenden ActiveX-Steuerelements in die Host-Anwendung erfolgt wie das Einfügen jedes anderen ActiveX-Steuerelements. Wenn Sie in Visual Studio entwickeln, öffnen Sie das Dialogfeld, klicken Sie mit der rechten Maustaste in das Dialogfeld und wählen Sie "ActiveX-Steuerelement einfügen..." aus dem Menü, das sich öffnet. Wählen Sie Ihr Steuerelement aus der Liste aus, und es wird eine Wrapper-Klasse für das Steuerelement und Code zum Erstellen eines Objekts dieser Klasse nach Bedarf generiert. Aus der Sicht des Dialogcodes ist es einfach da, und Sie können es wie jedes andere Steuerelement verwenden.

0voto

Shahrooz Kia Punkte 89

Um eine neue Komponente in MFC zu erstellen, müssen Sie eine Klasse aus der Fensterklasse (CWND) erstellen,

Danach können Sie Ihre MessageMap für die Komponente und Ihre Methoden haben und auch die CWND::OnDraw-Methode überschreiben, um das zu zeichnen, was Sie wollen. Davor empfehle ich Ihnen, einen Blick auf den Gerätekontext zu werfen

http://msdn.microsoft.com/en-us/library/azz5wt61(VS.80).aspx

Viel Glück, mein Freund.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X