amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > Hidden Windows unter OS4 Herausfinden [ - Search - New posts - Register - Login - ]

-1- [ - Post reply - ]

2005-09-19, 19:55 h

DariusBrewka
Posts: 899
[Banned user]
Wie kann ich unter OS4 herausfinden, ob ein Fenster Hidden ist irgendwie finde ich dafür weder eine Funktion, noch ein Flag irgendwo in der WindowStruktur.

[ - Answer - Quote - Direct link - ]

2005-09-21, 01:39 h

geit
Posts: 332
[Former member]
@DariusBrewka:

Also da hier noch keine Antworten gekommen sind, liege ich wohl mit meiner Vermutung richtig.

Das "Hiden"-Feature wurde von MorphOS erfunden. Dabei bleiben Rastports und alle anderen Strukturen intakt, während das Fenster einfach nur nicht mehr gezeichnet wird.

Da Du wie Du sagst keine Funktionen dafür gefunden hast, gehe ich mal davon aus, das es sie nicht gibt, weil es das Feature nicht gibt.

Der Iconify-State, wie ihn Reaction oder MUI durchführt ist ein Fensterschließen. Die Fenster gibt es schlicht nicht mehr.

Guido Mersmann

[ - Answer - Quote - Direct link - ]

2005-09-21, 09:51 h

DariusBrewka
Posts: 899
[Banned user]
Zitat:
Original von geit:
Da Du wie Du sagst keine Funktionen dafür gefunden hast, gehe ich mal davon aus, das es sie nicht gibt, weil es das Feature nicht gibt.

Der Iconify-State, wie ihn Reaction oder MUI durchführt ist ein Fensterschließen. Die Fenster gibt es schlicht nicht mehr.



Naja, da es die Funktionen SchowWindow() und HideWindow() gibt, wirds wohl auch das Verschwinden-der-Fenster Feature geben, und ob es nur ein einfaches Fenster schliessen ist glaube ich nicht, ich habe das gleiche auch in AROS wo das Fenster verschwindet aber dennoch die Fensterstruktur weiterhin existent bleibt.

gruss

Darius

[ - Answer - Quote - Direct link - ]

2005-09-21, 10:43 h

srupprecht
Posts: 39
User
Mit

long boolean;

GetWindowAttrs(window, WA_Hidden, &boolean, TAG_DONE);

[ - Answer - Quote - Direct link - ]

2005-09-21, 10:56 h

DariusBrewka
Posts: 899
[Banned user]
So habe ich es mir auch gedacht, in den Autodocs die ich habe steht WA_Hidden nicht in der Liste der für GetWindowAttrs() nutzbaren Tags.

danke

[ - Answer - Quote - Direct link - ]

2005-09-21, 12:03 h

srupprecht
Posts: 39
User
@DariusBrewka:

Ok, da hab' ich wohl verpennt das Autodoc aktuell zu halten ;-) Es funktioniert aber damit.

[ - Answer - Quote - Direct link - ]

2005-09-21, 12:14 h

DariusBrewka
Posts: 899
[Banned user]
Hab's mir auch gedacht, aber ich will nicht etwas was nicht explizit erlaubt ist nutzen. Wie auch immer testen kann ich's nicht ohne einen OS4 Rechner, ansonsten funktioniert mein Programm nach hörensagen ganz gut auf OS4 (ok hat nur einer getestet bisher).

Was mir jetzt noch fehlt ist das meine zusatztools auch damit laufen (das hatten wir doch schon mal), ich habe zwar das Ganze durch einen OS4 Lib code ergänzt, aber irgendwie schmiert das ab und nun weiß ich nicht ob's an der Lib liegt oder an dem wie ich auf diese zugreife.


code:
void CreateArgTool(struct ToolsModule *mod, char *name, APTR config) {
    if (toolPort) {
        if (name) {
            freeString(mod->libname);
            mod->libname = allocString(name);
        }
        if (mod->libname) {
            mod->lib = OpenLibrary(mod->libname, 39);
#ifdef __amigaos4__
            if (mod->lib) {
                mod->IF = (struct Amistart_ToolsIFace *) GetInterface(mod->lib,"main",1,NULL);
                if (mod->IF == NULL) {
                    CloseLibrary((struct Library *) mod->lib);
                    mod->lib = NULL;
                }
            }
#endif
            mod->tool = NULL;
            if (mod->lib)  {
#ifdef __amigaos4__             
                if (mod->IF->OpenTool()) {
#else
                if (OpenTool(mod->lib)) {
#endif
#ifdef __amigaos4__
                    mod->tool = mod->IF->NewTool(config, pool);
                    if (mod->tool) mod->port = mod->IF->GetToolPort(mod->tool);
#else
                    mod->tool = NewTool(config, pool, mod->lib);
                    if (mod->tool) mod->port = GetToolPort(mod->tool, mod->lib);

#endif
                }
            }
        }
    }
}


da mehrere Module vorhanden sein können kann ich nicht einfach NewTool() etc. nutzen, sondern muss auch die Libbase mit angeben.
Bei OS4 sichere ich halt das Interface und rufe die Funktionen darüber auf.

[ - Answer - Quote - Direct link - ]

2005-09-21, 12:22 h

srupprecht
Posts: 39
User
@DariusBrewka:

An den paar Sourcecode-Zeilen kann ich nichts finden. IdR. ist eine Ausgabe des GrimReapers bzw. ein serieller log, da schon hilfreicher.

[ - Answer - Quote - Direct link - ]

2005-09-21, 12:30 h

DariusBrewka
Posts: 899
[Banned user]
Ich vermute mal, dass es an der Library selber liegt, gibt's irgendwo ein Beispiel wie man eine erzeugt für OS4 PPC Nativ?, ich habe von os4depot die expat_lib genommen und geschaut wie es da geht und mir auch den muiheader source angeschaut und genauso verfahren, trotzdem der Absturz. Wie gesagt selber testen kann ich nicht, darum muss ich warten bis ich die Meldung der GrimReapers von meinem Tester bekomme.

gruss und danke

Darius

[ Dieser Beitrag wurde von DariusBrewka am 21.09.2005 um 12:30 Uhr editiert. ]

[ - Answer - Quote - Direct link - ]

2005-09-21, 12:36 h

geit
Posts: 332
[Former member]
@DariusBrewka

Ok, dann werde ich mir wohl auch mal ein aktuelleres SDK besorgen müssen. :)

Hab OS4 auch noch nicht wirklich selbst benutzt.

Geit


[ Dieser Beitrag wurde von geit am 21.09.2005 um 12:37 Uhr editiert. ]

[ - Answer - Quote - Direct link - ]

2005-09-21, 12:43 h

DariusBrewka
Posts: 899
[Banned user]
Zu OS4 selber ich find's schon lustig dass ich trotz mangels an OS4 mein Programm (ca 25000 Zeilen) innerhalb von ein Paar stunden auf OS4 lauffähig gemacht habe (soviel zum Thema Bugs und Bernd Rösch...)

Das SDK das habe ich aus dem GoldED Developer Environment

[ Dieser Beitrag wurde von DariusBrewka am 21.09.2005 um 12:45 Uhr editiert. ]

[ - Answer - Quote - Direct link - ]

2005-09-21, 12:53 h

srupprecht
Posts: 39
User
@DariusBrewka:

Mit dem idltool (68k version im os4depot) kann man auch ein Skelett einer OS4 Library erzeugen. Notwendige Änderungen sind (kurzgefasst):

- RTF_NATIVE in ROM Tag setzen.
- rt_Init muß auf die OS4 Erweiterungen zeigen (siehe Skelettcode).
- Letzter Parameter von LibInit() ist struct ExecIFace und nicht struct ExecBase.
- Der erste Parameter einer Libraryfunktion ist immer das Interface. Die "Base" bekommst Du mittels Interface->Data.LibBase.
- vararg Funktionen (...) müssen mit VARARGS68K deklariert werden (siehe auch va_start(), va_getlinearva() und va_end()).
- In LibExpunge() die Library mit DeleteLibrary(Base) freigeben und nicht mit FreeMem().

[ - Answer - Quote - Direct link - ]

2005-09-21, 16:15 h

DariusBrewka
Posts: 899
[Banned user]
Ich denke ich habe den Fehler gefunden war meine eigene Blödheit ich habe vergessen in libInit() vergessen die dos.library zu öffnen. Der Grimreaper log hat mir doch geholfen ;-)

Da schaut man doch 10 mal libInit() an und sieht nicht das OpenLibrary("dos"...) fehlt.

gruss und danke

[ - Answer - Quote - Direct link - ]

2005-09-22, 21:12 h

Georg
Posts: 107
User
Zitat:
Original von geit:

Das "Hiden"-Feature wurde von MorphOS erfunden. Dabei bleiben
Rastports und alle anderen Strukturen intakt, während das Fenster einfach nur nicht mehr gezeichnet wird.


Das ganze ist eigentlich ne relativ einfache Layers Geschichte. Ein unsichtbarer Layer wird aus seiner Sicht so gehandelt also ob er komplett verdeckt bzw. außerhalb des Screens ist. Und andere Layer handeln den unsichtbaren Layer so, als ober er gar nicht da wäre (z. B. beim Berechnen der sichtbaren/unsichtbaren Bereiche dieser anderen Layer).





[ - Answer - Quote - Direct link - ]


-1- [ - Post reply - ]


amiga-news.de Forum > Programmierung > Hidden Windows unter OS4 Herausfinden [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.