amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > MUI Fenster / Gadget und Rastport ? [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

14.06.2006, 08:49 Uhr

Kaesebroetchen
Posts: 643
Nutzer
Hallo,

ich möchte folgendes machen:

- Aus einem MUI Programm ein leeres Fenster mit fester Größe und weissem Hintergrund öffnen.

- Mir den RastPort diese Fenster holen und darin zeichnen

- Die Ereignisse diese Fensters auswerten wenn diese aktiv ist.

Ein Fenster öffnen ist kein Problem. Das mit der festen Größe klappt aber irgendwie nicht, ich habe es mit FixHeight und MUIV_Window_Width_Visible(p)
MUIV_Window_Width_Screen(p)

usw. versucht.

Auch einen weissen Hintergrun bekomme ich nicht hin.

Hier mal mein Code:
C++ code:
//Child Windows for Document Display,
           SubWindow,
           wnd1 = WindowObject, MUIA_Window_Title, "untitled",
                                MUIA_Window_AppWindow, TRUE, 
                                MUIA_Window_SizeGadget, TRUE,
                                                
                                WindowContents,    
               VGroup,
                      Child, HGroup,MUIA_FixWidth  , 640,
                                    MUIA_FixHeight , 480,
                                    MUIA_Background, MUII_SHINEBACK,     
                             
                      End,
               End,
           End,


Vielleicht kann mir jemand da einen Tip geben ?
Vor allem das mit dem RastPort wäre wichtig.
Geht das mit MUI überhaupt ?
Oder sollte ich lieber ein normales Fenster öffnen ?

--
http://amidevcpp.amiga-world.de/

[ - Antworten - Zitieren - Direktlink - ]

15.06.2006, 11:46 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
Also so Simpel ist das nicht, d.h. du kannst nicht einfach so etwas machen, wie etwa

code:
win = WindowObject,...
Draw(win->rp, 1,1);


du solltest eine Unterklasse der Area Classe erzeugen und die MUIM_Draw Methode überladen, dort kannst du auch auf den RastPort zugreifen.

Das hat u.A. den Hintergrund dass du z.B. MUI Objecte verschwinden lassen kannst, außerhalb von MUI weiß du das aber nicht, dann würde ein Draw() auf ein Nichtvorhandenens Fenster angewendet werden.

In dem MUI Developer SDK sind Beispielsources dafür Vorhanden.

[ - Antworten - Zitieren - Direktlink - ]

16.06.2006, 12:38 Uhr

Kaesebroetchen
Posts: 643
Nutzer
@DariusBrewka:
Ich hatte das zunächst so gelöst:
C++ code:
win2 = (Window*)XGET(wnd1, MUIA_Window_Window);              
                           rp = win2->RPort; 
                           RectFill(rp, 100, 100, 300, 300);


Das hat auch erst mal funtioniert, aber jetzt klappt es irgendwie nicht mehr und ich komm nicht drauf warum nicht...

Vielleicht sollte ich lieber erst mal erklären was ich vorhabe:

Ich möchte einen Texteditor schreiben, der die TrueType Engine Library verwendet um den Text darzustellen.
Das soll dann so aussehen, das ich ein Fenster aufmache in dem die Buttons drin sind, und ein leeres Fenster in dem der Text dargestellt wird.
In dem leeren Fenster habe ich ein RectangleObject das ich verwende um die aktuelle Größe des Fensters abzufragen.

Um den Text in das Fenster zu schreiben, brauche ich den RastPort des Fensters.

Wäre es vielleicht auch möglich den RastPort des RectangleObject zu bekommen ? Das wäre fast noch besser.

Wie gesagt, im prinzip hatte das ganze schon funktioniert und ich habe schon Text darstellen können.
--
http://amidevcpp.amiga-world.de/

[ - Antworten - Zitieren - Direktlink - ]

16.06.2006, 12:55 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von Kaesebroetchen:
@DariusBrewka:
Ich hatte das zunächst so gelöst:
C++ code:
win2 = (Window*)XGET(wnd1, MUIA_Window_Window);              
rp = win2->RPort;
RectFill(rp, 100, 100, 300, 300);

Das hat auch erst mal funtioniert, aber jetzt klappt es irgendwie nicht mehr und ich komm nicht drauf warum nicht...
Wo setzt Du denn die Farbe, in der gefüllt werden soll?

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

16.06.2006, 13:06 Uhr

Kaesebroetchen
Posts: 643
Nutzer
Zitat:
Wo setzt Du denn die Farbe, in der gefüllt werden soll?

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.


Das ist natürlich eine gute Frage I-) I-)

Ich habe gerade mal mit SetAPen, Pen 1 und 5 ausprobiert und keine Änderung.
Als es noch funktioniert hat, hat RectFill immer das Standard grau genommen.
--
http://amidevcpp.amiga-world.de/

[ - Antworten - Zitieren - Direktlink - ]

16.06.2006, 15:17 Uhr

tokai
Posts: 1071
Nutzer
@Kaesebroetchen:

Zitat:
win2 = (Window*)XGET(wnd1, MUIA_Window_Window);
rp = win2->RPort;
RectFill(rp, 100, 100, 300, 300);


Das ist für MUI-Programmierung komplett falsch.


Wie Darius schon angemerkt hat, wenn Du selbst etwas ins Fenster zeichnen möchtest, dann musst du eine Unterklasse erzeugen und die
entsprechende Methode (MUIM_Draw) überladen.

MUI SDK: class1.c, class2.c etc. für Anfängerbeispiele.


Alles andere brauchst Du gar nicht erst auszuprobieren, weil es gibt keinen anderen Weg. Das ist sicherlich erstmal relativ kompliziert, wenn man das noch nie gemacht hat, aber hat man es einmal begriffen möchte man gar nicht mehr anders programmieren wollen ;)

Das Lernen lohnt sich hier.

regards,
tokai


--
http://www.christianrosentreter.com ~ MorphOS Software

[ Dieser Beitrag wurde von tokai am 16.06.2006 um 15:18 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > MUI Fenster / Gadget und Rastport ? [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.