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

amiga-news.de Forum > Programmierung > Hidden Windows unter OS4 Herausfinden [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

19.09.2005, 19:55 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
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.

[ - Antworten - Zitieren - Direktlink - ]

21.09.2005, 01:39 Uhr

geit
Posts: 332
[Ex-Mitglied]
@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

[ - Antworten - Zitieren - Direktlink - ]

21.09.2005, 09:51 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
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

[ - Antworten - Zitieren - Direktlink - ]

21.09.2005, 10:43 Uhr

srupprecht
Posts: 39
Nutzer
Mit

long boolean;

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

[ - Antworten - Zitieren - Direktlink - ]

21.09.2005, 10:56 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
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

[ - Antworten - Zitieren - Direktlink - ]

21.09.2005, 12:03 Uhr

srupprecht
Posts: 39
Nutzer
@DariusBrewka:

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

[ - Antworten - Zitieren - Direktlink - ]

21.09.2005, 12:14 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
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.

[ - Antworten - Zitieren - Direktlink - ]

21.09.2005, 12:22 Uhr

srupprecht
Posts: 39
Nutzer
@DariusBrewka:

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

[ - Antworten - Zitieren - Direktlink - ]

21.09.2005, 12:30 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
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. ]

[ - Antworten - Zitieren - Direktlink - ]

21.09.2005, 12:36 Uhr

geit
Posts: 332
[Ex-Mitglied]
@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. ]

[ - Antworten - Zitieren - Direktlink - ]

21.09.2005, 12:43 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
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. ]

[ - Antworten - Zitieren - Direktlink - ]

21.09.2005, 12:53 Uhr

srupprecht
Posts: 39
Nutzer
@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().

[ - Antworten - Zitieren - Direktlink - ]

21.09.2005, 16:15 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
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

[ - Antworten - Zitieren - Direktlink - ]

22.09.2005, 21:12 Uhr

Georg
Posts: 107
Nutzer
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).





[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Hidden Windows unter OS4 Herausfinden [ - Suche - Neue Beiträge - Registrieren - Login - ]


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