Denkanstoss: Verschiedene Objekte in einem CView selektieren
-
Hallo zusammen
Ich brauche wieder einmal euere Hilfe um nicht aus versehen an der besten Lösung vorbeizudenken.
Die Situation
Ich habe ein MDI mit einem Doc/View-Aufbau. Der Einfachheit halber kann man sich die Struktur des DOC wie ein Buch vorstellen. Es gibt je nachdem unterschiedlich viel Kapitel, jedes Kapitel enthält unterscheidlich viel Absätze und so weiter. Das ganze wird im View grafisch ausgegeben.
Jetzt sollte es möglich sein, im View auf ein bestimmten Bereich zu klicken und die die dazugehörige Aktion ausführen. Die Aktion ist abhängig davon, ob jetzt ein Kapitel, Absatz oder was auch immer angeklickt wird. Soweit nicht spektakulär.Meine Lösungsideen
Alle Beispiele, die ich bis jetzt gefunden habe, nahmen im EventHandler (z.B. für die linke Maustaste) die Koordinaten und schauten, ob es innerhalb eines definierten Rechtecks war (ptInRect). Dafür muss ich aber von Hand von jedem gezeichnetem Teil das Rechteck speichern und jeweils alle durchchecken.Ich frage mich, ob es nicht ähnlich zu html möglich ist, gewisse Bereiche als "Klicksensitiv" zu bezeichen und bei einem Klick darauf zu reagieren, unabhängig an welcher Koordinate das Feld am Schluss liegt (wie ein Button).
Ich bin um jede Hilfe dankbar, sei es nur ein kleiner Tipp in welche Richtung ich mich bewegen soll, nach welchen Schlüsselwörter ich suchen soll etc.
Gruss Klopfspecht
-
Was meinst Du wie der Browser das macht?
Der hat eine Liste der Korrdinaten für alle seine Elemente und prüft wohin geklickt wurde.
Du kanst eindeutig sehen, dass deer Browser hier keine eigenen Fenster benutzt.Wo ist das Problem. Dein View muss die Daten rendern. Er kann sich eine entsprechende Map, der aktiven Koordinaten für bestimmte Objekte aufbauien. Oder sie werden eben errechnetin diesem Moment.
-
Guten Morgen
Der Browser verschiebt kann seine Elemente selbständig verschieben (wenn sie floatend sind). Zum Beispiel 10 Tabellenzeilen und anschliessend ein Bild. Wenn ich nun 20 Tabellenzeilen einfüge muss ich nicht von Hand die Position des Bildes verschieben, das macht es selber. Das der Browser intern die Position des Bildes bem rendern neu berechnet ist mir schon klar.Ich frage mich, ob ich alles selber rendern muss oder ob mir die mfc (oder wer auch immer) einen Teil der Arbeit abnehemen kann indem sie die Elemtente selbständig Positioniert und an der jeweiligen Stelle am Schluss auf die richtigen Klicks reagiert.
Gruss Klopfspecht
-
Da hilft Dir niemand wenn Dein View eben eine selbstgebaute Ausgabe ist, die eben nicht wieder über Elemente verfügt wie ein List View.
Wenn Du das auf Basis eines IE Controls machst ist natrülich alles drin, was eben mit einem IE-Control-Document möglich ist.Was meinst Du mit: Der Browser kann seine Elemente verschieben?
Das kann er nicht. Er passt die Daten an den Frame an. Wenn die Daten sich ändern, werden sie eben neu gerendert.
Nochmal: Wenn es ein eigener View ist der auf CView oder CScrollView basiert, dann wirst Du alles selber machen müssen.
-
Dann mach ich mir das selber (hab schon sowas vermutet). Ich wollte nur sicher sein, dass es keinen einfachen Weg gibt (den ich noch nicht kenne) bevor ich es mache.
Danke für die Hilfe.