Marsellus Wallace Geschrieben 5. Oktober 2002 Geschrieben 5. Oktober 2002 Hallo zusammen, ich hab ein Dialogfeld, auf dem ich zeichnen möchte, genauer gesagt ein Polygon. Mein Problem besteht darin, dass das ganze in ein Textfeld oder ein anderes Feld gezeichnet werden soll. Wenn ich nämlich den u.g. Code ausführe, wird einfach auf die Maske gepinselt und die Steuerelemente werden einfach überschrieben. Weiß also jemand, wie ich Zugriff auf einzelne Felder hab, um darin zu zeichnen? Danke. Gruß MW Hier noch ein paar Codefetzen... . CClientDC Rand(this); CPoint punkt[6]; CRgn region; CRgn *reg = region; . . . Rand.MoveTo(k, y); region.CreatePolygonRgn(punkt, 6, ALTERNATE); Rand.FrameRgn(reg, Rand.GetCurrentBrush(), 1, 1); Zitieren
idefix Geschrieben 7. Oktober 2002 Geschrieben 7. Oktober 2002 Möchtest du auf dem Dialogfeld zeichen, oder möchtest in einem EditCtrl zeichen? Innerhalb eines EditCtrls zeichen ist nicht ganz einfach. Ich würde sagen das du dir das noch mal überlegen solltest ob das wirklich notwendig ist. Man könnte zum beispiel optisch so tun als wenn, obwohl es zwei Fenster sind. Ich bin nicht ganz sicher aber vieleicht hilft auch ein RichEditCtrl. Würde die ganze Sache dann aber in eine ganz andere Richtung drängen. Zitieren
Marsellus Wallace Geschrieben 7. Oktober 2002 Autor Geschrieben 7. Oktober 2002 Original geschrieben von idefix Möchtest du auf dem Dialogfeld zeichen, oder möchtest in einem EditCtrl zeichen? Hi. Also das ganze soll nur innerhalb eines Edit-Controls (kann auch etwas vergleichbares sein)gezeichnet werden. Damit soll die Ausgabe vom restlichen Dialogfeld und den anderen Steuerelementen abgegrenzt werden. Innerhalb eines EditCtrls zeichen ist nicht ganz einfach. Ich würde sagen das du dir das noch mal überlegen solltest ob das wirklich notwendig ist. Hast du irgendeinen Hinweis? Eventuell einen Link? Würde mich in die Sache reinarbeiten. Das ist es mir wert. Man könnte zum beispiel optisch so tun als wenn, obwohl es zwei Fenster sind. Über diese Möglichkeit hab ich auch schon gelesen. Ist das aber nicht zu umständlich? Ich bin nicht ganz sicher aber vieleicht hilft auch ein RichEditCtrl. Würde die ganze Sache dann aber in eine ganz andere Richtung drängen. Meines Wissens unterstützt RichEdit nur Text. Und danke für erste. Zitieren
idefix Geschrieben 8. Oktober 2002 Geschrieben 8. Oktober 2002 Ein RichEdit kann Ole Objekte (ActiveX Ctlrs) aufnehmen. Da die Eigenschaften des ActiveX Ctrls frei definierbar sind kannst du alles mögliche machen. Ist aber nicht ganz einfach. Müsstest dich mit COM, Intefaces, Reg und so auseinandersetzen. Problem wird dann wahrscheinlich die Plazierung sein. EditCtrls sind für Eingaben gemacht. Wenn darin gezeichnet werden soll wird auch die Eingabe und das Zeichnen der Eingabe, Cut&Paste und so überschrieben. Kann man dann selber wieder einbauen. Beispiele habe ich leider nicht zur Hand, aber kannst ja mal WM_PAINT überschreiben. Nur so um abzuschätzen ob sich der Aufwand lohnt. Hege den Verdacht das du eigentlich keine Eingabe brauchst, sonder mehr Text mit Zeichnen was eigentlich eher ein StaticCtlr ist. Was die Sache enorm vereinfachen wird. Zitieren
idefix Geschrieben 8. Oktober 2002 Geschrieben 8. Oktober 2002 vieleicht hilft dir dieser Link www.codeproject.com/staticctrl/alexf_histogram.asp ist aber eine staticctrl Zitieren
idefix Geschrieben 8. Oktober 2002 Geschrieben 8. Oktober 2002 Ansonsten kann man auch folgendes machen CMyDraw::public CWnd { OnPaint() { //Malen nach Zahlen } }; CEditFrame::public CWnd { CEdit m_Edit; CMyDraw m_MyDraw; BOOL Create(...) { //Rect soaufteilen das es passt //Easy go m_Edit.Create(...,this,.); m_MyDraw.Create(...,this,); CWnd::Create(..,&Rect...); } }; Zitieren
idefix Geschrieben 8. Oktober 2002 Geschrieben 8. Oktober 2002 :p mal probieren ob die Kürzel sich zeigen Zitieren
Marsellus Wallace Geschrieben 9. Oktober 2002 Autor Geschrieben 9. Oktober 2002 Hi idefix, großes Lob und vielen Dank für die vielen nützlichen Tipps. Vor allem der Link zu dem Progrämmchen war sehr hilfreich. Hab aber in Sachen Grafikprogrammierung vorgeschlagen gekriegt, das ganze mit QT von Trolltech zu versuchen. Da gibt´s auch schon einige Threads drüber, ist denk ich von allem die einfachste Lösung, auch wenn das ganze viel Einarbeitungszeit beansprucht. Außerdem ist QT plattformunabhängig. Gruß MW Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.