![]() |
ENGLISH VERSION |
|
![]() |
Links | | | Forum | | | Kommentare | | | News melden |
![]() |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
![]() |
amiga-news.de Forum > Programmierung > Fenster Ikonifizieren | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
24.02.2003, 23:49 Uhr DariusBrewka Posts: 899 [Benutzer gesperrt] |
Hi Hat jemad Ahnung, wie man normale Intuition Fenster ikonifizieren kann, damit meine ich nun nicht MUI oder ähnliche Dinge, sondern diejenigen die das nicht unterstützen. Es gibt einige Tools, welches dieses ermöglichen, aber ich möchte das in mein eigenes Programm einbauen. Natürlich weiss ich das das ohne Hacks nicht geht, aber es soll ja nur Optional sein. Vieleicht gibt es dazu irgendwo Sources?? gruss Darius [ - Antworten - Zitieren - Direktlink - ] |
25.02.2003, 00:45 Uhr indypb Posts: 42 [Administrator] |
Hallo DariusBrewka,Zitat: Zumindest unter AmigaOS 3.0 geht das nur manuell. Window schließen und über die Workbench-Library ein AppIcon auf den Screen legen. tschuess [|8:) [ - Antworten - Zitieren - Direktlink - ] |
25.02.2003, 01:40 Uhr DariusBrewka Posts: 899 [Benutzer gesperrt] |
Das habe ich jetzt nicht gemeint, aber ich habe eine simple Lösung gefunden. Einfach die MinSize einträge auf 1 setzen und das Fenster irgendwo hinschieben und auf 1 Pixel verkleinern. Klappt gut und da sich an dieser Position schon etwas befindet auch vollkommen unsichtbar. Am schluss alles rückgängig machen. Natürlich muss man noch einiges berücksichtigen, aber ich denke das ist die Simpelste und Kompatibelste Methode [ - Antworten - Zitieren - Direktlink - ] |
25.02.2003, 12:38 Uhr Mad_Dog Posts: 1944 Nutzer |
Zitat: Auf der AmigaOS Developer CD sind Sources zu dem Thema drauf... [ - Antworten - Zitieren - Direktlink - ] |
25.02.2003, 13:52 Uhr tokai Posts: 1071 Nutzer |
Zitat: Simpel und kompatibel schon, aber das war's auch schon. Wenn du's wirklich ordentlich implementieren willst, dann musst do schon den umständlichen Weg über das Freigeben/Schliessen aller Bildschirmressourcen (Fenster, Screens usw.) gehen und ein AppIcon initialisieren. Am besten verwendest du dafür das Diskobject (Icon) der Programm-Exe selbst, somit lässt du dem Anwender die Wahl welches Icon auf seiner Workbench beim ikonifizieren erscheint. Die Methode ist völlig systemkonform und es handelt sich dabei auch nicht um ein Hack. btw: ohne Icon ist's auch kein ikonifizieren! 8) -- tokaiBild: http://www.christianrosentreter.com/__test/images/pacman.gif [ Dieser Beitrag wurde von tokai am 25.02.2003 editiert. ] [ - Antworten - Zitieren - Direktlink - ] |
25.02.2003, 18:45 Uhr Holger Posts: 8116 Nutzer |
Zitat:Es ist nicht kompatibel, denn, daß das Fenster bei dieser Größe unsichtbar ist, ist ein zufälliger Seiteneffekt und kann auf einem anderen System schon ganz anders aussehen. Außerdem freut sich der Anwender bestimmt ganz gewaltig, wenn er zufällig auf dieses unsichtbare Fenster klickt und unerwartete Ergebnisse bekommt. Und drittens ist der Sinn einer Ikonifizierungsfunktion gerade, daß bestimmte Resourcen freigegeben werden, während das Programm im Hintergrund liegt. Zum Beispiel möchte der Anwender vielleicht die Farb- oder Fonteinstellungen der Workbench ändern und Dein unsichtbares Fenster verhindert genau dies. Also, ganz so leicht sollte man es sich als Programmierer nicht machen. Wie man vorgehen muß, wurde Dir in diesem Thread ja schon gesagt. mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
25.02.2003, 23:43 Uhr DariusBrewka Posts: 899 [Benutzer gesperrt] |
Natürlich, den User wird es auch ganz bestimmt freuen wenn er sein Fenster nicht mehr aufbekommt, weil kein Speicher mehr da ist. Es ist bestimmt nicht der Sinn des "ikonifizierens" Resourcen Freizugeben, sondern das Fenster nicht mehr zu sehen! Andererseits wird das Fenster in den Hintergrund "Ikonifiziert", d.h. es befindet sich etwas davor und folglich kann nichts angeklickt werden, sodass dieses Argument auch nicht gilt. [ - Antworten - Zitieren - Direktlink - ] |
26.02.2003, 11:52 Uhr Holger Posts: 8116 Nutzer |
Zitat:Das ist bei allen Programmen so. Das ist ein normales Risiko, das man immer eingehen muß. Ein ikonifiziertes Programm kann problemlos solange ikonifiziert bleiben, bis wieder genug Speicher da ist. Übrigends kann Dir das in bestimmten Fällen auch beim Vergrößern des Fensters passieren. Zitat:Wenn ich wie schon gesagt Einstellungen ändern will und ein Programm in der von Dir geschilderten Art das verhindert, fliegt es bei mir definitv von der Festplatte. Mag sein, daß andere diese Schummelprogrammierung nicht stört, mag sein... Zitat:Natürlich kannst Du es in den Hintergrund legen, und wer garantiert Dir, daß es da auch bleibt? Willst Du dem Anwender verbieten, andere Fenster nach hinten zu legen? Um Himmels willen, ich befürchte, genau das wirst Du tun. Und noch viel Aufwand betreiben, das sicherzustellen, anstatt einfach die Ikoniofizierung ordentlich zu programmieren. mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
27.02.2003, 09:05 Uhr platon42 Posts: 400 [Ex-Mitglied] |
Zitat: Das ist Pech, passiert aber wohl seltenst. Zitat: Doch, genau das ist u.A. der Sinn. Zitat: Ein ein Pixel großes Fenster ist trotzdem noch ein Fenster. Es ist sichtbar, es blockiert den Screen, es hat Layer, die geupdatet werden (schlimmer noch mit SmartRefresh) und Deine angestrebte Methode ist nicht nur nicht schön, sie entspricht auch keinem Style-Guide. Solche Programme fliegen bei mir sofort wieder von der Platte. Ich meine, wieso fragst Du überhaupt danach, wie man Iconify implementiert, wenn Du's dann eh nicht machen willst? Ich hab jetzt leider keinen C-Source, weil ich seit MUI kein manuelles Iconify mehr programmiert habe, aber wenn der Assembler-Source so einer Funktion weniger als eine Seite ist, dann sind das in C ein paar Zeilen. -- Best Regards Chris Hodges [ Dieser Beitrag wurde von platon42 am 28.02.2003 editiert. ] [ - Antworten - Zitieren - Direktlink - ] |
27.02.2003, 11:10 Uhr DariusBrewka Posts: 899 [Benutzer gesperrt] |
Ich glaube, hier versteht keiner!. Mensch ich will kein Fenster Iknoifizieren, welches ich erzeugt habe sondern Fenster anderer Applikationen. Wie ich eigene Ikonifizieren kann ist mir vollkommen Klar und kein Problem, notfalls kann ich CloseWindow benutzen bei Fremdfenstern geht das wohl oder übel nicht. [ - Antworten - Zitieren - Direktlink - ] |
27.02.2003, 13:15 Uhr DOM Posts: 1045 Nutzer |
Selbst ist der Sucher! Wie wäre es mit dem AmiNet und wIconify.LZH ist zwar ein wenig alt, aber der Source dürfte wohl immer noch funzen! [ - Antworten - Zitieren - Direktlink - ] |
27.02.2003, 13:16 Uhr gni Posts: 1106 Nutzer |
Zitat:Das ist nicht unterstützt. Fremde Fenster sind off-limit. [ - Antworten - Zitieren - Direktlink - ] |
27.02.2003, 13:44 Uhr DariusBrewka Posts: 899 [Benutzer gesperrt] |
@gni Das sagt aber trotzdem nichts darüber aus, dass einige es trotzdem benutzen wollen!. Anders ausgedrückt wenn du es nicht benutzen willst, so kannst du es bleiben lassen. [ - Antworten - Zitieren - Direktlink - ] |
27.02.2003, 14:07 Uhr Holger Posts: 8116 Nutzer |
Zitat:Du solltest Dich mal mit dem Gedanken befassen, daß andere Programmierer auch einen Grund haben, ihr Fenster mit einer MinSize zu versehen. Es bedeutet einfach gesagt, kleiner ist _nicht erlaubt_. Wenn also das Programm abstürzt, weil z.B. der Layout-Algorithmus das nicht beherrscht, geht das auf Deine Kappe. Und Du kannst Dir noch nicht einmal ausreichend _vorstellen_, wieviele Fehler dadurch erzeugt werden können. mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
27.02.2003, 14:58 Uhr DariusBrewka Posts: 899 [Benutzer gesperrt] |
@Holger Natürlich, darum soll das ja auch nicht defaultmässig gehen sondern Optional und darum wird auch angegeben "Benutzung auf eigene Gefahr". Das man mit Fremden Fenstern nicht spielen soll, braucht mir keiner erzählen, nur wenn mich 50% Aller anschreiben ich solle das einbauen, so kann ich entweder dieses ignorieren (habe ich bisher auch gemacht, da es AOS nicht unterstützt (MUI etc. ausgenommen)), oder wenigstens eine Option angeben die zugegebenermassen nicht Ideal ist, aber immer noch "besser" als an irgendwelchen Strukturen rumzudoktorn, auch wenn die Änderung der MINSIZE Einträge nichts anderes ist. Ich würde lieber die MUI Ikonifizierung etc. unterstützen, aber woher soll ich wissen dass ein Fenster MUI-Ikonifizierbar etc. ist? Bisher habe ich keine Patches von Systemfunktionen benutzt und auch das auslesen der Intuitiondaten geschieht mehr oder weniger geschützt, darum brauch man mir nicht zu sagen an Fremden Fenstern fummelt man nicht. Wenn ich angebe, alles sei Optional und nicht Sicher, so ist das Legal da man es ja abschalten oder das ganze Programm nicht benutzen muss. [ - Antworten - Zitieren - Direktlink - ] |
27.02.2003, 15:47 Uhr Holger Posts: 8116 Nutzer |
Du könntest versuchen, einen passenden AREXX-Port zu finden (z.B. über Namensvergleiche) und diesem ein "HIDE" oder "ICONIFY" zu schicken. Hier ist die Wahrscheinlichkeit, daß das Programm ein solches Kommando unterstützt, aber völlig andere Dinge damit verbindet, sehr gering. Und es sollte zumindest nicht abstürzen, wenn es sauber programmiert ist. mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
27.02.2003, 15:50 Uhr Holger Posts: 8116 Nutzer |
Nachtrag: Eine andere Möglichkeit, ist die Commodities-Liste. Bei Commodities kann man sogar abfragen, ob sie Show/Hide-Kommandos unterstützen. [ - Antworten - Zitieren - Direktlink - ] |
27.02.2003, 16:45 Uhr Dietmar Posts: 166 Nutzer |
> Ich glaube, hier versteht keiner! Mensch ich will kein Fenster Iknoifizieren, welches ich erzeugt habe sondern Fenster anderer Applikationen. Und Du willst das machen, indem Du in die Fenster-Struktur anderer Programme "1" als minimale Grösse hereinschreibst ?! Idiotische Idee, die zum Absturz führen wird. Beispiel Editor DME: Wenn das Fenster auf einen (1) Pixel geschrumpft wird, ist die Anzahl Zeichen pro Zeile gleich 0, errechnet als innere Fenster-Grösse / Fontbreite. Da an anderer Stelle durch die Anzahl-Zeichnen-pro-Zeile geteilt wird (Scroller-Layout), gibt es einen Division By Zero Guru. Mit anderen Worten: wenn Programme ein Limit für die untere Fenstergröße setzen, haben sich die Progammierer dabei möglicherweise etwas gedacht und sind nicht für einen Pixel vorbereitet ;-) [ - Antworten - Zitieren - Direktlink - ] |
27.02.2003, 23:47 Uhr DariusBrewka Posts: 899 [Benutzer gesperrt] |
@Dietmar Natürlich SnoopDos hat das gleiche Problem verursacht, also tue ich's bei SnoopDos nicht!. Bei vielen Apps geht das nicht, weil denen dafür die "Vorraussetzungen" fehlen (nicht Resizeable etc.), aber bei vielen Andern hatte ich keine Probleme. [ - Antworten - Zitieren - Direktlink - ] |
28.02.2003, 08:41 Uhr platon42 Posts: 400 [Ex-Mitglied] |
Zitat: Vielleicht, lieber Darius, solltest Du in Zukunft Deine Fragen so formulieren, dass auch richtig verstanden werden und man nicht über mehrere Tage hinweg aneinander vorbeiredet :-P Und nun muss ich allen anderen auch zustimmen: Fremde Fenster sind definitiv tabu. Finger weg! Wir brauchen keine inkompatiblen Hacks wie es vor 10 Jahren üblich war, diese Zeiten sind endgültig vorbei. Wenn sich die User Iconify für Standardprogramme wünschen, können Sie doch a) den entsprechenden Programmierer fragen oder b) MorphOS oder AOS4 einsetzen, denn die unterstützen soetwas auf legale Weise (durch off-screen-layers, ohne dass man das Fenster resizen muss). -- -- Best Regards Chris Hodges [ - Antworten - Zitieren - Direktlink - ] |
28.02.2003, 20:39 Uhr Holger Posts: 8116 Nutzer |
Da fällt mir noch ein, daß es noch lustige Effekte geben wird, wenn das Dariusifierte Programm eine echte Ikonifizierungsfunktion hat. Dann kann das Fenster gleich vier verschiedene Zustände haben: Und drei der Zustände sind optisch nicht zu unterscheiden. Und noch lustiger wird, sobald ein Programm sein Fenster dauerhaft fixiert. U.u. öffnet es sein Fenster auch dann dariusifiert, wenn der Hack schon längst deinstalliert wurde. mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
01.03.2003, 14:27 Uhr Dietmar Posts: 166 Nutzer |
Zitat: Wenn ich das richtig sehe, arbeitest Du mit einer Negativliste (Liste mit Programmen, die sich nicht ikonifizieren lassen; alles andere wird ikonifiziert). Es wäre besser, mit einer Positivliste zu arbeiten: alles was sich bekanntermassen ikonifzieren lässt, wird ikonifiziert. In der Liste könnte auch vermerkt werden, wie es am besten geht: bestimmten Rexx-Befehl senden oder Deine Zwangsmethode. Wenn der User versucht, ein Programm zu ikonifizieren, das nicht in der Positivliste steht, Warnung anzeigen: "Wenn Sie fortfahren, stürzt möglicherweise der Rechner ab. Bitte beenden Sie alle wichtigen Programme". Und wenn es dann gut geht, das Programm in die Positivliste aufnehmen. [ - Antworten - Zitieren - Direktlink - ] |
01.03.2003, 17:08 Uhr DariusBrewka Posts: 899 [Benutzer gesperrt] |
@Dietmar Du hast vollkommen Recht und das ist der bisher einzig vernünftige Vorschlag. gruss [ - Antworten - Zitieren - Direktlink - ] |
04.03.2003, 18:17 Uhr Saint Posts: 68 Nutzer |
Wie macht das eigentlich PowerWindowsNG? Damit kann ich hier ohne Probleme sämtliche Fenster ikonifizieren, gab noch nie Abstürze. Ich vermute da wird die layers.library gepatcht, aber vielleicht bietet das programm ja einen Anhaltspunkt wie man soetwas machen kann. [ - Antworten - Zitieren - Direktlink - ] |
04.03.2003, 21:37 Uhr Holger Posts: 8116 Nutzer |
Zitat:Ich tippe mal auf ein Äquivalent zu aus dem Bildschirm schieben. Das hieße, daß das Programm vom System keine Aufforderungen zum Neuzeichnen mehr bekommt, und solange das Programm a) nicht von sich aus neuzeichnet oder b) alle Zeichenoperationen über den RastPort und nicht direkt in die BitMap ausführt (also mit korrektem Clipping) dürfte es dann keine Probleme geben. mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
05.03.2003, 19:25 Uhr Georg Posts: 107 Nutzer |
Zitat: Es installiert Patches (layers und andere), die dafür sorgen daß Layer, die über die Screen-Grenzen hinausgeschoben werden, in offscreen cliprects landen. So wie das auch bei von anderen Layern verdeckten Layern geschieht. Dazu wird einfach der Raum außerhalb des Screens mit vier nobackfill-layers "umrandet" und die Patches sorgen dafür, daß diese Layer immer die allervordersten bleiben. Um sicherzugehen, daß "normale" Layer, die über die Screengrenzen hinausgeschoben werden darunter landen und damit von layers automatisch als verdeckt gehandelt werden. Dann werden direkt im ROM noch per BlizKick Modul 3 kleine Intuition Check-Routinen ausgeschalten, die normalerweise dafür sorgen, daß man Fenster gar nicht über den Rand hinaus bewegen kann und sie statt dessen am Rand "anstoßen". Ikonifizierte Fenster werden einfach komplett außerhalb des Screens geMoveWindow()ed. BTW: Den Source davon gibts ja auch im Aminet [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > Fenster Ikonifizieren | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
![]() |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2025 by amiga-news.de - alle Rechte vorbehalten. |
![]() |