amiga-news 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: 7717
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: 7717
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:
Original von thomas:
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.


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: 7717
Nutzer

Zitat:
Ich benutz doch OpenWindowTags, also TAG basiert.

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:
Als Gerüst habe ich das Colorwheel Beispiel von der Developer CD 2.1
genommen.


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.
.