ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > Mehrere Fenster öffnen | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
13.10.2008, 13:46 Uhr Der_Wanderer Posts: 1229 Nutzer |
Hallo! Frage: Ich öffne ein Fenster mit OpenWindowTags(). Dann wird ein Message Port angelegt namens "UserPort" in der Window Structure. Dort kann ich auf IDCMP Messages lauschen. Was aber, wenn ich zwei oder mehr Fenster aufmache? Dann bekomme ich scheinbar jedesmal einen neuen UserPort. Wie kann man das verhindern, damit immer der gleiche Port benutzt wird? -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ - Antworten - Zitieren - Direktlink - ] |
13.10.2008, 13:56 Uhr thomas Posts: 7718 Nutzer |
RTFRKRM ? Kurzfassung: Fenster ohne IDCMP öffnen, dann in win->UserPort den bereits existierenden Port eintragen und mit ModifyIDCMP() die IDCMP-Flags setzen. Vor dem Schließen win->UserPort auf NULL setzen und dann mit ModifyIDCMP(0) die Flags löschen. Danach alle Messages für dieses Fenster vom Port holen und beantworten und erst dann CloseWindow() aufrufen. Ein Beispiel CloseWindowSafely() für diesen Fall gibt es in den RKRMs. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
13.10.2008, 14:09 Uhr Der_Wanderer Posts: 1229 Nutzer |
Ich hab das RKM gelesen, aber keine solche Aussage gefunden. Den Code für das Schliessen habe ich natürlich gefunden, auch dass man keine IDCMPs angeben kann und somit kein User-Port angelegt wird. Das man den UserPort anschliessend per Hand hinzufügen soll, habe ich allerdings nicht gefunden. Aber danke für die Erklärung. Bleibt noch zu klären: Wann soll ich den MessagePort initialisieren/freigeben? Soll ich MsgPort selbst erzeugen, und am Ende meines Programs auch per Hand freigeben? Oder soll ich den MsgPort benutzen, der beim erstellen des ersten Fensters autmatisch erzeugt wird? -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ - Antworten - Zitieren - Direktlink - ] |
13.10.2008, 14:27 Uhr Der_Wanderer Posts: 1229 Nutzer |
Ok, scheint so zu funzen, dass ich am Anfang meines Programs einen MsgPort erzeuge, den ich dann jedem Fenster zuweise. Am Ende meines Programms, wenn alle Fenster zu sind, lösche ich auch den MsgPort. Danke vielmals für die schnelle Hilfe! -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ - Antworten - Zitieren - Direktlink - ] |
13.10.2008, 15:49 Uhr thomas Posts: 7718 Nutzer |
Ok, nicht im RKRM, sondern in den Autodocs bei ModifyIDCMP und CloseWindow. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
13.10.2008, 20:04 Uhr uho Posts: 114 Nutzer |
@Der_Wanderer, thomas, Holger, ... bin zwar nicht mehr sehr aktiv hier, lese aber des öfteren. Und deshalb möchte ich mal ein dickes "Danke" aussprechen - für die unzähligen fundierten Beiträge, die oft schon die spannende Antwort enthielten, bevor ich mir die entsprechende Frage gestellt hatte. Danke ! Gruß uho [ - Antworten - Zitieren - Direktlink - ] |
21.10.2008, 13:37 Uhr Wishmaster Posts: 140 Nutzer |
Mann kann den Userport des ersten Fensters weiterverwenden. ARexx (selber nicht getestet) und Commodities-Messages kann Mann da auch noch drauf leiten. Aber so wie du es machst ist es noch flexibler. -- Pegasos MorphOS [ Dieser Beitrag wurde von Wishmaster am 21.10.2008 um 13:48 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
21.10.2008, 13:49 Uhr Der_Wanderer Posts: 1229 Nutzer |
Es ist komfortabler, den Port selbst zu erzeugen und für die Lebensdauer der gesamten Application zu behalten, auch wenn es Iconifiziert ist oder alle Fenster zu sein. Den gleichen Port für AREXX verwenden wäre elegant, aber wie unterscheide ich dann zwischen AREXX und IDCMP Mesages? -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ - Antworten - Zitieren - Direktlink - ] |
23.10.2008, 09:10 Uhr Holger Posts: 8116 Nutzer |
Zitat:Wenn mich meine Erinnerung nicht trügt, gibt es in einer der rexx#?.library eine entsprechende Funktion isRexxMsg(...) oder so ähnlich. Einfach mal in den Autodocs gucken... Ich hab die hier leider gerade nicht zur Hand. mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
29.10.2008, 16:56 Uhr Wishmaster Posts: 140 Nutzer |
@Holger: Sehr richtig. rexxsyslib.library result = IsRexxMsg(msgptr) D0 A0 BOOL IsRexxMsg(struct RexxMsg *) -- Pegasos MorphOS [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > Mehrere Fenster öffnen | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |