ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > FuelGauge Gadget | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
15.01.2003, 18:14 Uhr Mad_Dog Posts: 1944 Nutzer |
Hallo, Hat jemand von Euch schonmal was mit dem FuelGauge Gadget gemacht? Leider kommt bei mir nur Müll :-( Und JA: Ich habe die Developer CD 2.1 :-) Hier der Code: code:/* GUI.c */ #include <exec/types.h> #include <exec/memory.h> #include <intuition/intuition.h> #include <intuition/intuitionbase.h> #include <intuition/screens.h> #include <graphics/displayinfo.h> #include <intuition/gadgetclass.h> #include <gadgets/fuelgauge.h> #include <dos/dos.h> #include <pragmas/intuition_pragmas.h> #include <pragmas/dos_pragmas.h> #include <pragmas/datatypes_pragmas.h> #include <pragmas/exec_pragmas.h> #include <stdio.h> #include <stdlib.h> struct Library *IntuitionBase = NULL; struct Library *GfxBase = NULL; struct Library *FuelGaugeBase = NULL; /* MAIN */ void main(void) { struct Window *Mywindow; struct IntuiMessage *msg; struct Gadget *fuelgauge; ULONG exitvalue = RETURN_FAIL; BOOL Closeflag = FALSE; ULONG mywinsig; if (IntuitionBase = OpenLibrary("intuition.library",39)) if (GfxBase = OpenLibrary("graphics.library",39)) if (FuelGaugeBase = OpenLibrary("gadgets/fuelgauge.gadget",39L)) { /* Erzeuge FuelGauge Gadget */ fuelgauge = (struct Gadget *)NewObject(NULL,"fuelgauge.gadget", GA_Top, 10, GA_Left, 10, GA_Width, 40, GA_Height, 5, GA_ID, 1L, GA_Text, NULL, FUELGAUGE_Min, 0L, FUELGAUGE_Max, 100L, FUELGAUGE_Level, 25L, TAG_END); if (Mywindow = OpenWindowTags(NULL, WA_Left, 10, WA_Top, 20, WA_Height, 200, WA_Width, 400, WA_Title, "GUI Demo", // WA_CustomScreen, Myscreen, WA_IDCMP, IDCMP_CLOSEWINDOW | IDCMP_CHANGEWINDOW, WA_GimmeZeroZero, TRUE, WA_SizeGadget, TRUE, WA_DragBar, TRUE, WA_CloseGadget, TRUE, WA_DepthGadget, TRUE, WA_Activate, TRUE, WA_Gadgets, &fuelgauge, TAG_DONE)) { mywinsig = 1 << Mywindow->UserPort->mp_SigBit; do { Wait(mywinsig); while (msg = (struct IntuiMessage *)GetMsg(Mywindow->UserPort)) { switch (msg->Class) { case IDCMP_CLOSEWINDOW: Closeflag = TRUE; break; } ReplyMsg((struct Message *)msg); } } while (Closeflag == FALSE); /* Fenster schließen */ CloseWindow(Mywindow); DisposeObject(fuelgauge); exitvalue = RETURN_OK; } } else { fprintf(stderr,"ERROR: Fehler aufgetreten.n"); } /* Programmende */ if (FuelGaugeBase) CloseLibrary(FuelGaugeBase); else printf("Failed to open gadgets/gradientslider.gadgetn"); if (GfxBase) CloseLibrary(GfxBase); else printf("Failed to open graphics.libraryn"); if (IntuitionBase) CloseLibrary(IntuitionBase); else printf("Failed to open intuition.libraryn"); exit(exitvalue) } [ Dieser Beitrag wurde von Mad_Dog am 15.01.2003 editiert. ] [ - Antworten - Zitieren - Direktlink - ] |
15.01.2003, 18:45 Uhr thomas Posts: 7718 Nutzer |
Du mußt bei OpenWindow den Pointer auf das Gadget übergeben und nicht einen Pointer auf den Pointer auf das Gadget. Also WA_Gadgets,fuelgauge und nicht &fuelgauge. Gruß Thomas -- Email: thomas-rapp@web.de Home: home.t-online.de/home/thomas-rapp/ [ Dieser Beitrag wurde von thomas am 15.01.2003 editiert. ] [ - Antworten - Zitieren - Direktlink - ] |
15.01.2003, 19:21 Uhr thomas Posts: 7718 Nutzer |
Hehe, außerdem gehört Fuelgauge doch zu ReAction. Du solltest also ein ReAction-Programmgerüst benutzen und nicht einfach eine BOOPSI-Klasse voraussetzen, oder irre ich mich ? Jedenfalls gibt dein NewObject immer NULL zurück, es kann also gar nichts angezeigt werden. Gruß Thomas -- Email: thomas-rapp@web.de Home: home.t-online.de/home/thomas-rapp/ [ - Antworten - Zitieren - Direktlink - ] |
15.01.2003, 23:02 Uhr Mad_Dog Posts: 1944 Nutzer |
Zitat: Ich benutz doch OpenWindowTags, also TAG basiert. Als Gerüst habe ich das Colorwheel Beispiel von der Developer CD 2.1 genommen. [ - Antworten - Zitieren - Direktlink - ] |
16.01.2003, 22:11 Uhr Holger Posts: 8116 Nutzer |
Wie auch immer, das Anlegen eines Gadgets kann fehlschlagen und deshalb sollte das Ergebnis überprüft werden, anstatt es kritiklos dem OpenWindow() zu übergeben. Zumindest würde es Dir weiterhelfen, wenn Du wüßtest, ob es geklappt hat, oder nicht. So wie es uns auch weiterhelfen würde, wenn Du das Problem etwas genauer erläutern würdest, anstatt nur zu sagen "Leider kommt bei mir nur Müll". mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
17.01.2003, 16:54 Uhr thomas Posts: 7718 Nutzer |
Zitat: Wo ist der Unterschied ? Ein Gadget ist ein Gadget und ein Pointer ist ein Pointer. Wenn die Funktion einen Pointer auf ein Gadget benötigt, du aber einen Pointer auf einen Pointer übergibst, kommt Müll heraus. (Definition für "Müll": bei mir hängt sich der Amiga auf, das Fenster wird geöffnet, aber die System-Gadgets fehlen. Typisches Verhalten bei falschen Gadget-Pointern) Zitat: Colorwheel ist ein (normales) BOOPSI-Gadget und Fuelgauge ist ein ReAction-Gadget. Ich vermute, ein ReAction-Gadget braucht auch ein ReAction-Window. Wenn du, wie Holger vorschlägt, das Resultat von NewObject prüfen würdest, wüßtest du, daß NULL zurückgegeben wird, du also kein Gadget sehen kannst, selbst wenn OpenWindow korrekt aufgerufen wird. Gruß Thomas -- Email: thomas-rapp@web.de Home: home.t-online.de/home/thomas-rapp/ [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > FuelGauge Gadget | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |