3 Stimmen

Wie erstelle und füge ich ein benutzerdefiniertes Komponente zu einer Dialog basierten App (MFC) hinzu?

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

Ich weiß nicht 2 Dinge:

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

    oder PolyLine? Im OnPaint-Handler, den ich definieren und im MESSAGE MAP zuordnen sollte? Wird

    es (OnPaint-Handler) vom OnPaint-Handler des Dialogs der Anwendung aufgerufen

    oder von wo aus?

  2. Wie verbinde ich die Komponente, sobald sie erstellt ist, mit der Testanwendung, die

    beispielsweise auf einem Dialog basiert? Wo sollte ich diese Komponente instanziieren? Aus einem

    OnCreate-Methode des MyAppDialog.cpp?

Ich habe vor einigen Tagen mit der Programmierung in MFC begonnen und bin darüber sehr verwirrt.

Vielen Dank im Voraus,

Prost.

0voto

Jerry Coffin Punkte 452852

Das Malen des Steuerelements wird genau wie behandelt, als ob es kein Steuerelement wäre. Wenn Sie MFC verwenden, bedeutet das (zumindest normalerweise), dass Sie die Zeichnung in der Ansichtsklasse OnDraw machen (MFC behandelt normalerweise OnPaint intern, sodass Sie es selten berühren).

Das Einfügen des resultierenden ActiveX-Steuerelements in die Hostanwendung erfolgt wie bei jedem anderen ActiveX-Steuerelement. Wenn Sie Ihre Entwicklung in Visual Studio durchführen, machen Sie das normalerweise, indem Sie den Dialog öffnen, mit der rechten Maustaste innerhalb des Dialogfelds klicken und im Popup-Menü "ActiveX-Steuerelement einfügen ..." auswählen. Wählen Sie Ihr Steuerelement aus der Liste aus, und es wird eine Wrapperklasse für das Steuerelement und Code generiert, um bei Bedarf ein Objekt dieser Klasse zu erstellen. Aus Sicht des Dialogcodes ist es einfach da, und Sie können es ungefähr wie jedes andere Steuerelement verwenden.

0voto

Shahrooz Kia Punkte 89

Um ein neues Komponente in MFC zu erstellen, müssen Sie eine Klasse von der Fensterklasse (CWND) erstellen,

dann können Sie Ihren MessageMap für die Komponente erstellen und Ihre Methoden und auch die Methode CWND::OnDraw überschreiben, um das zu zeichnen, was Sie möchten. Vorher empfehle ich Ihnen, einen Blick auf den Gerätekontext zu werfen

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

Viel Glück, 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