Veröffentlicht 5. Oktober 200222 j 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);
7. Oktober 200222 j 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.
7. Oktober 200222 j 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.
8. Oktober 200222 j 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.
8. Oktober 200222 j vieleicht hilft dir dieser Link www.codeproject.com/staticctrl/alexf_histogram.asp ist aber eine staticctrl
8. Oktober 200222 j 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...); } };
9. Oktober 200222 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.