![]() |
C Gauge selber bauen
Hallo ihr lieben Gauge-Designer.
Ich hätte da ml eine Frage, diesbezüglich der C-Gauge programmierung. Ich habe gehört, das das Programmieren von Sim Icons das leichteste auf diesem Gebiet sein soll. Da ich einigermaßen gut C kann, würde ich mal gerne sehen, wie soetwas als Quellcode also N I C H T compiliert aussieht. Hätte da mal jemand ein Quellcodebeispiel für mich, das ich da irgendwie mal ein bisschen durchblicke??? mfg Atze |
Hallo!
Also zuallererst einmal: Ich bin kein C Gauges Designer, ich mach meine Gauges mit XML. Diese sind viel schneller gebaut, und für den Freeware Bereich reichen sie allemal aus(von der Komplexität her).
Weil ein FMC mit XML zu realisieren ist nicht möglich. Aber das möchte ich auch garnicht! Lade dir das SDK herunter, dort sind einige Bsp. drinnen. HIER Und auf Flightsim.com findest du das Gauges Tuturial von Dai Griffits. Musst ein bisschen suchen. Aber es lohnt sich allemal, weil dort wirklich alles erklärt ist. Und im "IdeHowTo" wird erklärt, wie man mit dem MS Visual Studio die Gauges "compiled". Zu finden auf Flightsim.com. Ich jedenfalls bleibe nach einem kleinen Exkurs zu den C gauges doch bei "meinen" XML Gauges. Bei XML kann ich dir weiterhelfen, bei C gauges frag leiber im Avsim Forum nach! Viele Grüße Harri:cool: P.S.:Und damit du ungefähr weißt, mit was du es hier zu tun hast, hier ein kurzer Ausschnitt aus dem SDK Gauge! Das ist nur das eigentliche (Sub-)Gauge. Man braucht dann noch ein .c, wo alle Subgauges registriert werden, dann noch ein paar .h, und dann noch die Bilder. Alles zusammenmischen und dann hoffen, dass man nicht 55Errors bekommt. // SDK.Attitude.c // Copyright (c) 2000 Microsoft Corporation(auweh, das heißt nie was gutes). All rights reserved.(jaja, wer klaut euch den schon euren fehlerhaften Source Code...?) // Set up gauge header char attitude_gauge_name[] = GAUGE_NAME; extern PELEMENT_HEADER attitude_list; extern MOUSERECT attitude_mouse_rect[]; GAUGE_HEADER_FS700(GAUGE_W, attitude_gauge_name, &attitude_list, \ attitude_mouse_rect, 0, 0, 0, 0); ///////////////////////////////////////////////////////////////////////////// FAILURE_RECORD attitude_fail[] = { {FAIL_GAUGE_ATTITUDE, FAIL_ACTION_NONE}, {FAIL_NONE, FAIL_ACTION_NONE} }; ///////////////////////////////////////////////////////////////////////////// MAKE_SPRITE ( attitude_sprite_outer, BMP_ATTITUDE_SMALL_CARD2, NULL, attitude_fail, IMAGE_USE_TRANSPARENCY|IMAGE_BILINEAR_COLOR, 0, 16, 13, 137,134, 1.05, 1.05, MODULE_VAR_NONE, NULL, 0, MODULE_VAR_NONE, NULL, 0, ATTITUDE_INDICATOR_BANK_DEGREES, NULL, -1 ) PELEMENT_HEADER attitude_sprite_outer_list[] = { &attitude_sprite_outer.header, NULL }; ///////////////////////////////////////////////////////////////////////////// #define PITCH_LIMIT 43.0 // stop at 43 degrees FLOAT64 FSAPI attitude_sprite_inner_cb( PELEMENT_SPRITE pelement ) { FLOAT64 val = pelement->source_var_y.var_value.n; if( val > PITCH_LIMIT ) val = PITCH_LIMIT; else if( val < -PITCH_LIMIT ) val = -PITCH_LIMIT; return val; } MAKE_SPRITE ( attitude_sprite_inner, BMP_ATTITUDE_SMALL_CARD1, attitude_sprite_outer_list, attitude_fail, IMAGE_USE_TRANSPARENCY|IMAGE_BILINEAR_COLOR, 0, 55, 53, 137, 134, 0.55, 0.55, MODULE_VAR_NONE, NULL, 0, ATTITUDE_INDICATOR_PITCH_DEGREES, attitude_sprite_inner_cb, 2.0, ATTITUDE_INDICATOR_BANK_DEGREES, NULL, -1 ) PELEMENT_HEADER attitude_sprite_inner_list[] = { &attitude_sprite_inner.header, NULL }; ///////////////////////////////////////////////////////////////////////////// MAKE_STATIC ( attitude_background, BMP_ATTITUDE_SMALL_BACKGROUND, attitude_sprite_inner_list, attitude_fail, IMAGE_USE_TRANSPARENCY, 0, 0,0 ) PELEMENT_HEADER attitude_list = &attitude_background.header; ///////////////////////////////////////////////////////////////////////////// MOUSE_BEGIN( attitude_mouse_rect, HELPID_GAUGE_ATTITUDE_INDICATOR, 0, 0 ) MOUSE_END ///////////////////////////////////////////////////////////////////////////// #undef GAUGE_NAME #undef GAUGEHDR_VAR_NAME #undef GAUGE_W |
Damit du einen Vergleich zwischen C und XML hast:
Hier das gleiche Gauge(ein analoger ADI) in XML Sprache;der einzige Unterschied in der Funktionsweise ist der, dass ein Flight Director vorhanden ist: Dies ist das fertige XML-gauge, es wird keine Header Datei benötigt. Viele Grüße Harri:cool: PHP-Code:
|
Die wichtigsten Quellen sind schon von Harri angegeben. Wenn du C beherrschst ist das Gauge-Programmieren nicht weiter schwer(persönliche Meinung, aber ich mach' das schon ein bischen länger). Es ist halt persönlicher Geschmack ob man nun XML oder C wählt. Alles, was keine aufwendigen Kalkulationen bedarf, ist in XML u.U. schneller zu haben als in C, es hängt ein bischen von der Erfahrung und angesammeltem Code ab was einfacher ist.
Arne Bartels (C-Gauge Fan, der auch mal XML-Gauges macht) |
Hey, danke für eure Antworten.
Also das Grundprinzip habe ich jetzt verstanden. Ich möchte mal so ein Höhenansage realisieren. z.B. don't sink:mad: , too low flap:o oder einfach nur 100 feet:D Geht das auf die gleiche Weise mit dem Einbinden der Sounds wie mit den Bildern??? Danke im Vorraus für eure Antworten mfg Atze |
Hallo!
Also, wie schon gesagt, ich bin ein XML-Mensch :D , aber manche Fragen kann ich dir von C auch erklären.
Sounds sind eigentlich nur in C realisierbar. XML kann man da (fast)vergessen. Sounds kannst du mit der fssound.dll in dein Gauge einbinden. Die FsSound.dll ist im Gauge-Tut. von Dai Griffiths inkludiert. Es ist die "Developer Version", die du brauchst. Wenn du C beherrscht, wird auch dies kein allzugroßes Problem für dich darstellen. Viele Grüße Harri:cool: P.S.: @Atze: Deine Signatur ist nicht gerade toll, wenn man Gauges und so bauen will, und dann da steht, "Was schlecht ist kann ich noch schlechter". Ein bisschen positiv denken ist manchmal sehr vortilhaft :) Ein kleiner Ausschnitt aus einem Gauge, der Bereich den ich beigefügt habe, ist für den Sound zuständig. // -------------------------------------------------------------------------- // MOUSE CALLBACKS // -------------------------------------------------------------------------- BOOL FSAPI mouse_left_cb(PPIXPOINT relative_point, FLAGS32 mouse_flags) { // play a sound buffer exaclty once // There are different play macros for file and resource sounds. The // reason behind this is, that sound buffers can get lost (e.g. when the // application looses input focus) and in such a case, the FSSound module // returns false from it's Play() function. To restore a lost sound buffer, // one can simply reregister it with the apropriate register function // (RegisterFile() or RegisterRes()). This is exactly what the play macros // do behind the scene and that's the reason for the two different macros. MFSSoundResPlay(left_sound, FALSE); return FALSE; } BOOL FSAPI mouse_right_cb(PPIXPOINT relative_point, FLAGS32 mouse_flags) { // play a sound buffer from a sound file MFSSoundFilePlay(right_sound, FALSE); return FALSE; } // -------------------------------------------------------------------------- // DRAWING ELEMENT CALLBACKS // -------------------------------------------------------------------------- // icon callbacks FLOAT64 FSAPI left_cb(PELEMENT_ICON pelement) { // you can check whether a sound buffer is currently playing return MFSSoundIsPlaying(left_sound); } FLOAT64 FSAPI right_cb(PELEMENT_ICON pelement) { // the button shows "on" while the sound buffer is playing return MFSSoundIsPlaying(right_sound); } // -------------------------------------------------------------------------- // MAIN GAUGE CALLBACK // -------------------------------------------------------------------------- void FSAPI over_cb(PGAUGEHDR pgauge, int service_id, UINT32 extra_data) { switch(service_id) { case PANEL_SERVICE_POST_INSTALL: // sounds need to be registered before they can be played MFSSoundFileRegister(right_sound); // for sound resources, the handle of the module must be specified MFSSoundResRegister(left_sound, (HMODULE)extra_data); // the sound controlled by the left button should only be played // on the left seaker MFSSoundSetPan(left_sound, -10000); // same for the sound controlled by the right button MFSSoundSetPan(right_sound, 10000); break; case PANEL_SERVICE_PRE_KILL: // never forget to unregister the sounds MFSSoundUnregister(left_sound); MFSSoundUnregister(right_sound); break; } } |
ok, thx
Wie funktioniert eigentlich diese Listungsdatei mu das alles zusammen zu bekommen??? Und muss die Datei denne irgendwie in C compiliert werden??? Geht denne auch C++??? @ Harry3 Bitte beachte meine Neue Signatur:p Ist nicht böse gemeint :D mfg Atze |
Am besten ackert man sich mal mindestens einmal durch die SDK samples und tutorials, dann wird schon vieles klarer.
Es ist durchaus erlaubt die .c Dateien als .cpp Dateien zu speichern und zu kompilieren (sd2gau13 Dateien sind dann Pflicht!) das heist dann aber nur dass in einer .cpp Datei C Code kompiliert wird, es wird also kein echtes C++ benutzt mit Klassen, Vererbung und dergleichen. Anderereseits ist es auch recht einfach Teile des Codes z.B. den Soundzugriff in eine Klasse auszulagern und per extern "C" Aufrufsyntax in dem Gauge zu nutzen, da ist einiges möglich. Im Übrigen ist die C-Gaugesyntax nahezu völlig statisch und benötigt u. U. überhaupt keine Implementation von Funktionen, so dass hier von C oder C++ fast gar keine Rede ist. Für die Sound-Einbindung gibt es mehrere Ansätze, neben der FSSound.dll gibt es z.B. noch RFGutils wo man dann keine DLL mitnehmen muss, dafür gibt es aber nur ein russisches readme (kein Problem die Beispiele reichen aus). Sounds können also eingebunden werden, sind aber eigentlich nicht vorgesehen für C-Gauges und verlanges deshalb ein bischen Nicht-Standard Code. Erstmal einige "normale" Gauges zum "Aufwärmen" sind deshalb empfehlendswert. Arne Bartels |
Vielen Dank für eure zahlreiche Beteiligung:)
Ich habe die beiden Beispiele also .c und .xml mav verglichen. Ich habe gesehen, das bei den C Gauges die Sprache insgesamt andees ist als im XML Format. Gibt es da irgendwie eine Tabelle, welcher Befehl was macht??? Und kann mann den Quelltext der Gauges, die von Microsoft :motz: mitgeliefert worden sind auch irgendwie einsehen??? Danke für eure Antworten im vorraus mfg Atze |
Hallo!
So, und schon haben wir den letzten Tag des Jahres. Ich muss noch ein bisschen aufbleiben, dann ewig lang schlafen, damit ich dann heute/morgen nachts nicht müde bin. Einer muss sich ja ums Feuerwerk bis in die Nacht hinein kümmern. Und interessant wirds sowieso erst danach;)
In Sachen XML kann ich dir sagen, dass es da ein Word Dokument von Microsoft gibt, in dem alle Variablen aufgelistet sind. Zu finden ist dieses im Panel und Gauges SDK.(link siehe oben!). Auch ein Must-have, übrigens von Arne Bartels(siehe oben!ein wahrer Großmeister bei allem was mit Gauges zu tun hat!!!), ist das XMLGAU01, zu finden auf Avsim. Dort werden ein paar Grundlagen durchgemacht, aber vor allem die logischen Operationen(UND,ODER,...), und die if{} else etc... Funktionen, die dort aufgelistet sind, machen diesen Download für mich zu einem Must Have. Zu C kann dir sicher Arne Bartels was sagen! Viele Grüße Harri:cool: |
@Harry3 Vielen Dank für die Antworten.
Ich habe mir das gerade gezogen und fange an, mich damit Morgen mal zu beschäftigen. ICH WÜNSCHE ALLEN HIER FALLS MAN SICH NICHT MEHR IM ALTEN JAHR HÖRT EIN GUTES NEUES UND GESUNDES JAHR. mfg Atze |
Hallo!
Also, Atze, deine Signatur gefällt mir sehr viel besser als die vorige.:)
Also, sollte ich es noch nicht erwähnt haben: Für C brauchst du wenn möglich MS Visual Studio. Für XML brauchst du nur NotePad. Einen guten Rutsch wünsch ich euch! Schöne Grüße, Harri:cool: |
@ Harry3
Vielen Dank Aber als was muss ich dann eigentlich das xml Gauge abspeichern. Erstmal als Text?!? oder wie macht man das??? mfg Atze |
Bei XML
Du öffnest NotePad, tippst deinen Source Code ein, und dann gehst du auf "Speichern unter", ganz unten steht dann "Textdokumente", darüber gibst du den Namen ein, z.B. Gauge.xml, und weil du das .xml dabeistehen hast, weiß Notepad, dass es hier ein XML abspeichern muss.
Wenn du einen Code für ein bestimmtes Gauge in XML erklärt haben willst, kann ich dir da behilflich sein. Viele Grüße Harri:cool: |
Zitat:
Oder musst du erst mal den Sylvesterrausch ausschlafen?;) Viele Grüße Harri:cool: |
@ Harry3
Danke für deine Hilfe. Naja, ich war zu Silvester so betrunken :mad: das ich sogar neben das Klo gebrochen habe, und jetzt versuche ich es erstmal mit einem Popup Icon:D Ich meine damit, soetwas, womit man das ATC Fenster oder so öffnen kann. mfg Atze |
Hallo!
Es ist kurz vor 17.00Uhr, jetzt bin ich online. Jeden Tag fast zur selben Zeit...Komisch
Zitat:
Dabei war gestern auch noch ein sooo tolles Wetter! In welcher Sprache schreibst du dein Popup Gauge? C oder XML? Viele Grüße Harri:cool: |
Hallo Harry3
Ich probiere es gerade in xml. Ich habe leider nur Borland C++ und wollte mir nicht noch ein anderes kaufen. Aber was bedeuten denne das hier??? ImageSizes="12,12,19,19" /> Also ich könnte mir darunter nur die Bildgröße vorstellen. mfg Atze |
Hi Atze
du kannst auch mit Borland C++ Gauges in C erstellen. Das einzige was du beachten musst ist das Du eine Win32 Dll erstellst. Die kannst du dann in *.gau umbenennen und dann sollte das gehen. Gruß Bastian |
Das MS-Original:
PHP-Code:
Wobei die 4 Werte etwas verwirrend aussehen könnten, weil es ja nur zwei Werte gibt: x und y(waagrecht und senkrecht). Die MS Standart Gauges haben immer 2 verschiedene Textursets dabei: einmal für niedrige, einmal für hohe Auflösung. Die ersten beiden Zahlen x1 y1 sind für niedrige Auflösung[640*480], die anderen (x2,y2) für hohe Auflösung(1024*768). Damit ergibt sich auch der Umrechnungsfaktor: 1024/640=1,6!!! Man muss aber nicht 2 Textursets verwenden, und die meisten tun das auch nicht. Es wäre einfach zu aufwendig jede Textur 2mal zu zeichnen! Es reicht also bei deinen Gauges aus, ein Bild mit 19*19 Pixeln zu maln und dann ImageSizes="19,19" zu verwenden. Noch ein Tipp: Im Mouse Bereich steht irgendwo HelpID. Dies ist die Hilfe, die angezeigt wird, wenn die Maus über dem Gauge ist. Mit HelpID stehen dir allerdings nur begrentzt viele Möglichkeiten zur Verfügung.(da gibts eine Tabelle). Und solche Dinge wie APU sind sicher nicht in der Tabelle vorhanden. Aber du kannst dir eine Hilfestellung selber schreiben. Mit der Tooltip Funktion kannst du jeden beliebigen Text einfügen. PHP-Code:
Ein copyright samt email kannst du natürlich auch noch hinzufügen, es hat keine Auswirkung auf dein Gauge! Also sollte das Gauge schließlich ungefähr so aussehen: PHP-Code:
Viele Grüße, Harri:cool: |
Vielen Dank an alle.
Sobald mein Gauge feddisch is, werde ich es dann mal hier als Anhang anhängen:D Das wird aber noch ein bisschen dauern. Achso, wird das 19*19 als Pixel oder Millimeter gerechnet??? Gehört zwar nicht hierher, aber ich bin gerade dabei, die Bell (Der Hubschrauber) fliegen zu lernen. Es macht sehr viel Spaß, aber wenn ich eine Bruchlandung mache, dann :motz: ich mich. mfg Atze |
Guten Morgen!(oder wie man bei euch sagt: Moin Moin Moin)
Jetzt hab ich kurz vorm Schlafengehen noch mal den Compi angeworfen, und siehe da, unser Gauge Programmierer ist auch noch auf!
Alle Größen werden in Pixel angegeben. Du musst mit MS Paint nur mal auf die äußersten Ecken der .bmp hinfahren und die Werte unten rechts ablesen, z.B. 12,32. Das sind sie schon, die x und y Koordinaten! Zitat:
weil ich damals mein erstes Gauge, auch ein SimIcon, auch ins Forum gestellt habe. Mein zweites Gauge war dann ein EADI, der jetzt im TBM700 Panel inkludiert ist(aber mit viel mehr Funktionen als damals!). Wenn ich mich da zurückerinnere, an mein erstes SimIcon. Es war ein warmer Sommerabend:D. Das SDK wurde mit Rekordgeschwindigkeit gesaugt und ich sah mir ein bereits inkludiertes SimIcon von Microsoft an. Ich glaub ich bin 2 Stunden gesessen, um den Source Code mal einigermaßen durchschaut zu haben(obwohls eh nur ein 8 Zeiler war). Inzwischen ist ein heftiges Gewitter aufgezogen, und meine Mutter wollte, dass ich den Compi abschalte. "So ein Compi halt schon ein bisschen was aus, wenns sein muss auch einen Blitz"; (wer's glaubt) ,hab ich ihr gesagt und das SDK fröhlich weitergesaugt. Zurück zum Gauge:So 100%-tig hab ich das SimIcon erst ein paar Tage später durchschaut. Bei dir wirds halt so sein: Es war ein eiskalter Wintertag, du warst noch ein bisschen angeheitert von Sylvester, aber das brauchtest du, um nicht bei den kryptischen Zeichen des Gauge Codes durchzudrehen... So, jetzt hör ich schreiben auf, da kommt eh nur Blödsinn raus!:lol: Also nicht abschrecken lassen, auch Hans Hartmann hat vor seinem FMC für die DF mal kleine Schalter etc. programmiert. Nur selten werden Gauges Programmierer geboren :D Viele Grüße Harri:cool: |
Hallo nochmal!
Hier noch kurz der Link zu den besagten ersten 2 Gauges, die ich programmierte: HIER
Während das SimIcon mehr oder weniger abgeschrieben vom MS-Original war, war der EADI schon eine Eigenproduktion. Damals verwendete ich noch ein XML-Editor Programm. Das ließ ich aber dann bald. Denn wenn man den Source Code manuell schreibt, bekommt man ein viel besseres Gefühl für XML Gauges. Nur so nebenbei! Also, jetzt ist's endgültig Zeit zum Schlafengehen. Viele Grüße Harri:cool: |
Vielen Dank Harry3
Es sieht so aus, das ich nur noch das Bild malen muss. Ansonsten ist der Sourcecode schonmal fertig:D Achja, hast Du villicht mal lust, mit mir Online zu fliegen??? mfg Atze |
Hallo!
Das mit dem Onlinefliegen geht (vorerst) noch nicht, weil mein Joystick nicht mehr funktioniert. Aber jetzt kommt sowieso ein Computerfachmann in nächster Zeit, der soll das reparieren.
Aber sobald der Joystick wieder funktioniert, können wir ja mal ne Runde zwischen Deutschland und Österreich drehen. (z.B.:München-Innsbruck mit nem kleinen Flieger, oder Berlin-Innsbruck mit ner dicken Kiste???). Achso, und wegen meinem Namen: Musst nicht Harry3 sagen, Harri genügt. Ich heiß ja nur deswegen harry3, weil Harry,1,2,schon belegt waren. mfg Harri:cool: |
moin moin Harry
Das wäre Super. Mein Gauge Bold nimmt lansam Gestalt an:D :D :D :D :D Und das, was das Fliegen zwischen Deutschland und Österreich angeht, freue ich mich schon drauf. Wird aber mit dem Gauge noch einige Tage dauern, weil ich auch noch ein bisschen mit GMAX rumspielen will, und mir irgendwann eine eigene Maschiene zu bauen. mfg Atze |
Hallo!
Von Gmax (und auch FSDS) halt ich lieber Abstand.
In der Schule werden wir jetzt zwar bald einmal anfangen, mit CAD zu zeichnen. Aber ein Flugzeug zu designen kann ich mir nicht vorstellen:eek: Bei Gauges braucht man nur ein paar Werte zusammensetzen, alles ist irgendwie mehr oder weniger logisch. Aber beim Flugzeugdesignen muss man auch noch künstlerisch begabt sein, um all die Rundungen etc. hinzubekommen. Und das kann ich nicht. So, ich muss nun endlich mal meine TBM700 fertigmachen. Wollte ja schon zu Weihnachten releasen, wird wohl nix mit dem Termin:eek: Naja, müssen die Leute, die sie haben wollen, eben ein bisschen länger warten :p. Viele Grüße Harri:cool: |
Naja, wennst du meinst
Ich habe bis jetzt nur kleine Objekte erstellt, aber künstlerische Begabung werde ich ja wohl haben, wenn in in Kunst also Zeichnen eine 1 habe. Und was das Gauge angeht, werde ich es bald fertig haben. Lass doch lieber mit einem Hubschrauber zwischen Deutschland und Österreich fliegen ok??? mfg Atze |
Hallo!
Damals zu den Gym Zeiten hatten wir auch noch künstl. Zeichnen, und da hatte ich auch immer einen 1er.
Jetzt haben wir Technischen Zeichnen, und da hab ich glaub ich einen 2er. Aber irgendwie möchte ich mir so ein Großprojekt(Flugzeugmodell) noch nicht antun. Obwohl einfache Dinge wie ein einfaches Haus(Quader mit aufgesetztem Dach...u.ä.) hab ich auch schon gemacht. Zitat:
Ich nehm da lieber einen Flächenflieger. Wahrscheinlich die TBM700, weil ich das Cockpit eh noch testen muss, ob im Flug auch alles so funktioniert wie's wirklich sein muss! Und, wie funktioniert dein Popup Gauge? Damit kannst du jetzt Subpanels auf-poppen:lol: Schöne Grüße Harri:cool: |
Hallo Harry
Mein Popup Menü ist fast fertig. Naja, dann kannst Du ja mit deiner TBM 700 fliegen und ich mit einem Heli ok??? mfg Atze |
Ja, passt gut!
Grüße, Harri:cool: |
Hallo Harry
Kannst Du mir mal deine E-Mail Adresse geben, das wir das ganze nicht gerade im Forum abwickeln mussen??? mfg Atze |
E-mail müsste schon bei dir angekommen sein.
mfg harri:cool: |
Hast dein erstes Gauge schon fertiggestellt?
Sollte ja nicht so viel Arbeit sein, den 8-zeiler abzutippen, oder??? mfg harri:cool: |
Moin
Ich habe jetzt ein C Gauge geschrieben und soeine Registry-Datei für das Ding. Aber wie füge ich das alles nun zusammen, kann da mal einer eine Schritt für Schritt Anleitung geben??? @Harry Ja, dat Knöppchen is schon fertig, habe es halt nur noch nicht gepostet, weil ich daran noch einiges verbessern will. Ich will nämlich nicht, das dann jemand lacht und sagt "Das is ja kagge", weil's bis jetzt noch ziemlich komisch aussieht. mfg Atze |
tachchen
Wollte nur nochmal den Beitrag nach oben "poppen" POPUP mfg Atze |
Willst Du in der Registry herummanipulieren oder wie war das gedacht? Ich halte sowas für einigermassen unnötig, aber bei Bedarf kannst Du ja mal ein Blick auf RegOpenKey und dergl. werfen.
Arne Bartels |
Hallo
Nein, ich meine das so. Man schreibt erst ein Gauge Source Code und dann muss der noch in einer bestimmten Datei, die ich schon geschrieben habe "anmelden" Nur meine Frage ist, wie compiliere ich den Sourcecode und diese Datei mit den Gauge-Registrierungen und nachher alles zu einem Gauge??? Danke im Vorraus mfg Atze |
Häh, habe ich immer noch nicht kapiert. C kompilierte Gauges sind DLLs mit der Endung .gau und brauchen von keinem Programm oder weiterer Datei registriert werden.
Es gibt im Prinzip zwei Methoden um ein Gauge zu kompilieren (genauer den .c code zu kompilieren, den .rc Ressourcecode kompilieren und mit user32.lib zusammen zum .gau zu binden aka "linken"). Erstens die "makefile" Methode wie im SDK beshrieben, das Makefile an das zu kompilierende Gauge anpassen, auf der Kommandozeile "make" tippen un hoffentlich klappts. Bei der zweiten Methode lässt man sich die Arbeit von der VC++ IDE abnehmen, indem man ein DLL Projekt erstellt die main.c und main.rc (und nur die!) zum Projekt hinzufügt und "Alles neu erstellen" oder "...gau neu erstellen" drücken und hoffen... Leicht abgewandelte makefiles für BCC und GCC sind Teil von sd2gau13.zip, die zweite Methode ist auch dort und in "idehowto.zip" beschrieben. Arne Bartels |
Hallo!
Also, die Datei, wo alle Subgauges definiert werden, ist die Haupt .c.
In C(++) kenn ich mich nicht aus, also kann ichs dir auch nicht ganz so erklären. Aber hier mal ein Bsp. Hast du eigentlich das SDK von Dai Griffits runtergeladen??? Denn dort steht das alles so super beschrieben!!! Grüße, Harri:cool: Es gibt ganz oben die #include Zeilen. Da inkludiert man einfach mal alles, was irgendwie eine .h Endung hat... Dann werden eh schon die SubGauges definiert. Ist irgendwie eh selbsterklärend... Und schließlich noch der Gauge Table Entry: Das ist der Name nachdem Gaugedateinamen, mit dem man das Gauge in der panel.cfg aufruft;z.B:sdk!attitude . ------------------------------------------------------- #include "..\inc\gauges.h" #include "..\inc\eventid.h" #include "oilgauge.h" //Included gauges list #define GAUGE_NAME "portoil\0" #define GAUGEHDR_VAR_NAME gaugehdr_portoilstate #define GAUGE_W 100 #include "subgauges\port_oil.c" #define GAUGE_NAME "staroil\0" #define GAUGEHDR_VAR_NAME gaugehdr_staroilstate #define GAUGE_W 100 #include "subgauges\star_oil.c" // Gauge table entries GAUGE_TABLE_BEGIN() GAUGE_TABLE_ENTRY(&gaugehdr_portoilstate) GAUGE_TABLE_ENTRY(&gaugehdr_staroilstate) GAUGE_TABLE_END() |
| Alle Zeitangaben in WEZ +2. Es ist jetzt 05:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag