![]() |
DEUTSCHE VERSION |
|
![]() |
Links | | | Forums | | | Comments | | | Report news |
![]() |
Chat | | | Polls | | | Newsticker | | | Archive |
![]() |
amiga-news.de Forum > Programmierung > Mehrere Fenster öffnen | [ - Search - New posts - Register - Login - ] |
-1- | [ - Post reply - ] |
2008-10-13, 13:46 h Der_Wanderer Posts: 1229 User |
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 [ - Answer - Quote - Direct link - ] |
2008-10-13, 13:56 h thomas Posts: 7721 User |
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/ [ - Answer - Quote - Direct link - ] |
2008-10-13, 14:09 h Der_Wanderer Posts: 1229 User |
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 [ - Answer - Quote - Direct link - ] |
2008-10-13, 14:27 h Der_Wanderer Posts: 1229 User |
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 [ - Answer - Quote - Direct link - ] |
2008-10-13, 15:49 h thomas Posts: 7721 User |
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/ [ - Answer - Quote - Direct link - ] |
2008-10-13, 20:04 h uho Posts: 114 User |
@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 [ - Answer - Quote - Direct link - ] |
2008-10-21, 13:37 h Wishmaster Posts: 140 User |
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. ] [ - Answer - Quote - Direct link - ] |
2008-10-21, 13:49 h Der_Wanderer Posts: 1229 User |
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 [ - Answer - Quote - Direct link - ] |
2008-10-23, 09:10 h Holger Posts: 8116 User |
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. [ - Answer - Quote - Direct link - ] |
2008-10-29, 16:56 h Wishmaster Posts: 140 User |
@Holger: Sehr richtig. rexxsyslib.library result = IsRexxMsg(msgptr) D0 A0 BOOL IsRexxMsg(struct RexxMsg *) -- Pegasos MorphOS [ - Answer - Quote - Direct link - ] |
-1- | [ - Post reply - ] |
amiga-news.de Forum > Programmierung > Mehrere Fenster öffnen | [ - Search - New posts - Register - Login - ] |
![]() |
Masthead |
Privacy policy |
Netiquette |
Advertising |
Contact
Copyright © 1998-2025 by amiga-news.de - all rights reserved. |
![]() |