![]() |
DEUTSCHE VERSION |
|
![]() |
Links | | | Forums | | | Comments | | | Report news |
![]() |
Chat | | | Polls | | | Newsticker | | | Archive |
![]() |
amiga-news.de Forum > Programmierung > FuelGauge Gadget | [ - Search - New posts - Register - Login - ] |
-1- | [ - Post reply - ] |
2003-01-15, 18:14 h Mad_Dog Posts: 1944 User |
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. ] [ - Answer - Quote - Direct link - ] |
2003-01-15, 18:45 h thomas Posts: 7721 User |
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. ] [ - Answer - Quote - Direct link - ] |
2003-01-15, 19:21 h thomas Posts: 7721 User |
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/ [ - Answer - Quote - Direct link - ] |
2003-01-15, 23:02 h Mad_Dog Posts: 1944 User |
Zitat: Ich benutz doch OpenWindowTags, also TAG basiert. Als Gerüst habe ich das Colorwheel Beispiel von der Developer CD 2.1 genommen. [ - Answer - Quote - Direct link - ] |
2003-01-16, 22:11 h Holger Posts: 8116 User |
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. [ - Answer - Quote - Direct link - ] |
2003-01-17, 16:54 h thomas Posts: 7721 User |
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/ [ - Answer - Quote - Direct link - ] |
-1- | [ - Post reply - ] |
amiga-news.de Forum > Programmierung > FuelGauge Gadget | [ - Search - New posts - Register - Login - ] |
![]() |
Masthead |
Privacy policy |
Netiquette |
Advertising |
Contact
Copyright © 1998-2025 by amiga-news.de - all rights reserved. |
![]() |