WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Designer Forum (http://www.wcm.at/forum/forumdisplay.php?f=61)
-   -   Gauge-Newbie-Frage (http://www.wcm.at/forum/showthread.php?t=87007)

pschartau 05.02.2003 20:32

Gauge-Newbie-Frage
 
Hallo,
ich habe mir das Microsoft Panels & Gauge SDK heruntergeladen, und versuche jetzt meine erste Gauge in C zu programmieren. Ich habe mäßige C-Kenntnisse, aber relativ gute allgemeine Programmierfähigkeiten. Ich habe es hingekriegt, eine einfache Gauge zu erstellen, die nur aus einem Hintergrundbild besteht. Jetzt möchte ich aber einen einfachen String anzeigen. Und der wird einfach nicht angezeigt, obwohl die Gauge problemlos kompiliert. Wahrscheinlich mache ich etwas fundamental falsch, daher hier mein kompletter Code:
Code:

//        Set up gauge header
char main_gauge_name[]                = GAUGE_NAME;
extern PELEMENT_HEADER                main_list;
extern MOUSERECT                        main_mouse_rect[];

GAUGE_HEADER_FS700( GAUGE_W, main_gauge_name, &main_list, \
                                                main_mouse_rect, 0, 0, 0, 0 );

#define GAUGE_CHARSET                                DEFAULT_CHARSET
#define GAUGE_FONT_DEFAULT                        "Courier New"
#define GAUGE_WEIGHT_DEFAULT                FW_NORMAL

/////////////////////////////////////////////////////////////////////////

STRING_UPDATE_CALLBACK title_update;

MAKE_STRING
(
        title_string,
        NULL,
        NULL,
        IMAGE_USE_ERASE | IMAGE_USE_BRIGHT | IMAGE_USE_TRANSPARENCY,
        0,
        20, 20,
        60, 10,
        17,
        MODULE_VAR_NONE,
        MODULE_VAR_NONE,
        MODULE_VAR_NONE,
        RGB(255,0,0),
        RGB(0,0,0),
        RGB(92,92,92),
        GAUGE_FONT_DEFAULT,
        GAUGE_WEIGHT_DEFAULT,
        GAUGE_CHARSET,
        0,
        DT_CENTER | DT_VCENTER | DT_SINGLELINE,
        NULL,
        title_update
)

FLOAT64 FSAPI        title_update( PELEMENT_STRING pelement )

{
        FLOAT64 val=pelement->source_var[0].var_value.n;
        val = !val;

        wsprintf(pelement->string, "%9s", "TestGauge");

        return val;
}


PELEMENT_HEADER                strings_list[] =
{
        &title_string.header,
        NULL
};


/////////////////////////////////////////////////////////////////////////////
MAKE_STATIC
(
        main_background,
        BMP_BACKGROUND,
        NULL,
        NULL,
        IMAGE_USE_TRANSPARENCY,
        0,
        0, 0
)

PELEMENT_HEADER                main_list        = &main_background.header;

/////////////////////////////////////////////////////////////////////////////
MOUSE_BEGIN( main_mouse_rect, NULL, 0, 0 )
MOUSE_END


/////////////////////////////////////////////////////////////////////////////
#undef GAUGE_NAME
#undef GAUGEHDR_VAR_NAME
#undef GAUGE_W

Ich wäre sehr dankbar, wenn mir jamand sagen könnte, warum mein String einfach nicht angezeigt wird.

Gruß
Philipp

HansHartmann 05.02.2003 21:03

Längenangabe bei Strings? Gut, ich kenne die C Standard Library nicht vollkommen auswendig, aber mir ist neu, dass das geht.

Mach mal aus dem
wsprintf(pelement->string, "%9s", "TestGauge");
ein
wsprintf(pelement->string, "%s", "TestGauge");

Wenn das auch nicht hilft, dann ersetz wsprintf() durch das "normale" sprintf() (stdio.h includen!). Ich meine, dass ich mit wsprintf() schon mal so meine Problemchen im Zusammenhang mit Gauges hatte.

pschartau 05.02.2003 21:26

Hans,
danke für deine Hilfe. Leider hat keine der beiden Methoden mein Problem gelöst. Fällt dir noch etwas ein, woran es liegen könnte?

Gruß
Philipp

HansHartmann 05.02.2003 21:57

Ich könnte mir höchstens noch vorstellen, dass der String niemals aktualisiert weil Du dreimal MODULE_VAR_NONE benutzt. Ansonsten sehe ich in dem Code eigentlich kein Problem.

pschartau 05.02.2003 22:01

Und wie würde ich es dann schaffen, die Anzeige zum ersten Mal zu aktualisieren?
Ich darf doch sicher nicht "TestGauge" statt MODULE_VAR_NONE direkt in die MAKE_STRING-Zeile schreiben, oder?

Gruß
Philipp

HansHartmann 05.02.2003 22:12

Nein, aber zum Bleistift CLOCK_SECOND oder TICK18.

pschartau 05.02.2003 23:47

Selbst das funktioniert nicht. Was soll ich tun? *Verzweiflung!* :heul:

Gruß
Philipp

HansHartmann 06.02.2003 18:44

Hartmann, Du bist blind.... :D :D :D

Das Problem ist nicht im MAKE_STRING, sondern unten im MAKE_STATIC. Da fehlt nämlich die Verkettung zum String oben (die Zeile mit dem &strings_list):

MAKE_STATIC
(
main_background,
BMP_BACKGROUND,
&strings_list,
NULL,
IMAGE_USE_TRANSPARENCY,
0,
0, 0
)

Hoffentlich klappt's nun.

pschartau 06.02.2003 21:35

Juchu, ich bin gerettet!
Danke Hans, es funktioniert!
Ich glaube ich lese mir den Absatz über plists im Manual nochmal ganz genau durch...

Gruß
Philipp


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag