See site in english Voir le site en francais
Website skin:
home  download  forum  link  contact

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

Author Topic: Documentation sur comment programmer un MFD ?  (Read 9212 times)

0 Members and 1 Guest are viewing this topic.

Offline Syntetik

  • Sr. Member
  • ****
  • Posts: 287
  • Country: France fr
  • Karma: 3
25 December 2009, 22:34:18
Bonsoir tout le monde et Joyeuses Fêtes.

Voilà : je voudrais être capable de programmer un MFD mais je ne comprends pas grand chose à l'API_Reference
d'Orbiter. Je voudrais savoir si il existe une documentation sur la création d'un MFD. DanSteph a bien décrit la création
de vaisseaux mais il n'y a rien sur les MFDs. Et puis l'exemple CustomMFD me semble très compliqué (il affiche
des graphes).

Dans un premier temps je voudrais créer quelque chose de simple comme afficher quelque chose à l'écran, saisir un
texte, le sauvegarder dans le scénario, programmer des actions aux boutons.

Toute aide serait la bienvenue.

Cordialement,


Syntetik

Je... ce que vous faites là, Tintin, est splendide!... Je... Enfin, bonne chance!... Attention: Je mets le moteur en marche!...
Hergé

Offline Syntetik

  • Sr. Member
  • ****
  • Posts: 287
  • Country: France fr
  • Karma: 3
Reply #1 - 29 December 2009, 22:48:13
Bonsoir tout le monde.

La compilation de mon essai de MFD échoue avec 70 erreurs. Je ne comprends pas pourquoi ça ne compile pas alors
que ça marche pour CustomMFD et MFDTemplate, les 2 exemples du SDK. Les erreurs sont LNK2028,
LNK2001, LNK2019 et LNK1120. J'ai créé ma classe MonMFD à partir d'un projet vide.

Bref j'ai besoin d'aide :help:. Je n'ai rien trouvé sur le Net qui puisse m'aider.

Cordialement.


Syntetik

Je... ce que vous faites là, Tintin, est splendide!... Je... Enfin, bonne chance!... Attention: Je mets le moteur en marche!...
Hergé

Offline Syntetik

  • Sr. Member
  • ****
  • Posts: 287
  • Country: France fr
  • Karma: 3
Reply #2 - 29 December 2009, 23:40:53
Bon, j'ai rajouté orbiter.lib et Orbitersdk.lib comme pour dans MFDTemplate et le compilateur me jette 2
erreurs : LNK2005 et LNK1169. Il dit que 1 symbole a déjà été défini dans MSVCRTD.lib. Mais l'ennui
c'est que si j'exclue cette dernière bibliothèque alors le compilo me crache 50 erreurs à la figure :bug:.

Cordialement.


Syntetik

Je... ce que vous faites là, Tintin, est splendide!... Je... Enfin, bonne chance!... Attention: Je mets le moteur en marche!...
Hergé

Offline Woodylepic

  • Newbie
  • *
  • Posts: 6
  • Karma: 0
Reply #3 - 30 December 2009, 05:00:19
Quote
Syntetik a écrit:
Bon, j'ai rajouté orbiter.lib et Orbitersdk.lib comme pour dans MFDTemplate et le compilateur me jette 2
erreurs : LNK2005 et LNK1169. Il dit que 1 symbole a déjà été défini dans MSVCRTD.lib. Mais l'ennui
c'est que si j'exclue cette dernière bibliothèque alors le compilo me crache 50 erreurs à la figure :bug:.

Cordialement.

ta peut être placer tes library  tes include ou tes api en mauvaise ordre suit les instruction d'instalation a la letre voici
les instruction d'instalation.

http://orbiter.dansteph.com/forum/index.php?topic=6334.msg95341#msg95341

ci ca ne fonctionne tours pas fait une recherche google sur LNK2005,LNK1169 et MSVCRTD.lib

Bonne chance.


Offline Syntetik

  • Sr. Member
  • ****
  • Posts: 287
  • Country: France fr
  • Karma: 3
Reply #4 - 30 December 2009, 21:07:48
Merci pour votre réponse.

Mes libraries et fichiers sont dans le bon ordre. D'ailleurs l'exemple du SDK MFDTemplate se compile sans problème.
J'avais téléchargé MFD Wizard sur Orbit Hangar Mods ici http://www.orbithangar.com/searchid.php?ID=4159 .
Mais je n'arrive pas à le faire fonctionner ; il sert à produire des projets de MFD en C++.

Je suis donc toujours coincé.

Cordialement


Syntetik

Je... ce que vous faites là, Tintin, est splendide!... Je... Enfin, bonne chance!... Attention: Je mets le moteur en marche!...
Hergé

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15407
  • Karma: 256
  • Hein, quoi !?
    • FsPassengers
Reply #5 - 30 December 2009, 21:56:11
Peux tu copier/coller le log complet de compile ?

Dan


Offline Syntetik

  • Sr. Member
  • ****
  • Posts: 287
  • Country: France fr
  • Karma: 3
Reply #6 - 30 December 2009, 22:05:41
Oui, cela donne ça :

Quote
1>------ Début de la génération : Projet : MonMFD, Configuration : Debug Win32 ------
1>Édition des liens en cours...
1>   Création de la bibliothèque D:\Orbitersdk\samples\MonMFD\Debug\MonMFD.lib et de l'objet
D:\Orbitersdk\samples\MonMFD\Debug\MonMFD.exp
1>Orbitersdk.lib(Orbitersdk.obj) : error LNK2005: _DllMain@12 déjà défini(e) dans MSVCRTD.lib(dllmain.obj)
1>D:\Orbitersdk\samples\MonMFD\Debug\MonMFD.dll : fatal error LNK1169: un ou plusieurs symboles définis à
différentes reprises ont été rencontrés
1>Le journal de génération a été enregistré à
l'emplacement "file://d:\Orbitersdk\samples\MonMFD\MonMFD\Debug\BuildLog.htm"
1>MonMFD - 2 erreur(s), 0 avertissement(s)
========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
Et si j'ignore MSVCRTD.lib, il me sort 50 erreurs. Par contre MFDTemplate des exemples compile sans problème.

Je ne sais plus quoi faire :help:.

Cordialement,


Syntetik

Je... ce que vous faites là, Tintin, est splendide!... Je... Enfin, bonne chance!... Attention: Je mets le moteur en marche!...
Hergé

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15407
  • Karma: 256
  • Hein, quoi !?
    • FsPassengers
Reply #7 - 30 December 2009, 23:29:46
Quote
error LNK2005: _DllMain@12 déjà défini(e) dans MSVCRTD.lib(dllmain.obj)

Les libs c'est bon, c'est le symbole DllMain qui passe pas. En copiant/collant de divers exemple tu as du coller un point
d'entrée "DllMain" quelque part dans le code.


Cherche un truc dans le genre "DllMain" et vire toute la fonction du code.
ça peut ressembler à ça:

Code: [Select]
BOOL WINAPI DllMain (HINSTANCE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
...
return TRUE;
}

Si ca marche toujours pas poste le rapport ;)

Dan


Offline Syntetik

  • Sr. Member
  • ****
  • Posts: 287
  • Country: France fr
  • Karma: 3
Reply #8 - 31 December 2009, 17:42:24
Merci pour votre réponse.

Je n'ai pas "DllMain" dans mon code. Le projet ne contient que 2 fichiers : MonMFD.h et MonMFD.cpp
. C'était un projet vide au départ. J'ai supprimé le mystérieux fichier de ressources sans résultat. Des
"DllMain" il n'y en a que dans 2 projets : Dragonfly et Dragonfly_old.

Cordialement


Syntetik

Je... ce que vous faites là, Tintin, est splendide!... Je... Enfin, bonne chance!... Attention: Je mets le moteur en marche!...
Hergé

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15407
  • Karma: 256
  • Hein, quoi !?
    • FsPassengers
Reply #9 - 31 December 2009, 17:47:19
Quote
Syntetik a écrit:
Merci pour votre réponse.
Je n'ai pas "DllMain" dans mon code. Le projet ne contient que 2 fichiers : MonMFD.h et MonMFD.cpp
. C'était un projet vide au départ. J'ai supprimé le mystérieux fichier de ressources sans résultat. Des
"DllMain" il n'y en a que dans 2 projets : Dragonfly et Dragonfly_old.
Cordialement

Tu peux me tutoyer hein ;)

Peux tu poster ton projet avec tout les fichiers sur un site (gratos) de hosting et me donner le lien en pm ?
(une exemple de site gratos: http://www.4shared.com )
A ce stade je trouverais plus vite la solution qu'avec des question/réponse sur le forum. Je t'expliquerais
une fois trouvé.

A++

Dan


Offline Syntetik

  • Sr. Member
  • ****
  • Posts: 287
  • Country: France fr
  • Karma: 3
Reply #10 - 31 December 2009, 18:10:57
Oui, voilà le lien :
http://www.4shared.com/file/185451379/9d55ba78/MonMFD.html

J'espère que tu trouvera. J'utilise Visual C++ 2008.

Cordialement


Syntetik

Je... ce que vous faites là, Tintin, est splendide!... Je... Enfin, bonne chance!... Attention: Je mets le moteur en marche!...
Hergé

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15407
  • Karma: 256
  • Hein, quoi !?
    • FsPassengers
Reply #11 - 01 January 2010, 14:39:14
J'ai cherché hier en vitesse en comparant tout les settings avec un projet qui marche, rien !
tout semblait pareil et les quelques changements apporté pour coller exactement à l'autre n'ont rien changés.

Ma théorie c'est qu'en partant d'une "feuille blanche" (créant un nouveau projet avec VC2008 )
il existe des settings "a-la-con" caché quelque part qui créent effectivement un point d'entrée dllmain.
Maintenant savoir ou exactement, bof ! C'est un peu le foutoir tout ces settings, l'essentiel c'est de bosser.

J'ai donc fait comme d'habitude: partir d'un projet existant, décharger les sources, changer quelques noms
reloader tes sources et hop. ça marche chez moi ! MonMFD.dll créée

http://orbiter.dansteph.com/MonMFD.zip

unzip dans sample, clique sur le vcproj, il demandera peut-être de convertir (j'ai VC2005)
si ca marche j'aurais encore un truc à te dire pour la compile.

Dan



Message modifié ( 01-01-2010 14:50 )


Offline Syntetik

  • Sr. Member
  • ****
  • Posts: 287
  • Country: France fr
  • Karma: 3
Reply #12 - 01 January 2010, 18:20:30
Hourra !

Ça compile ! Et MonMFD.dll fonctionne.

Je te remercie vivement pour ton aide :beer:. Dommage qu'on ne puisse pas trouver le setting qui cloche. Partir
d'un projet existant qui compile semble être la seule alternative. Je n'arrive pas non plus à faire fonctionner
MFDWizard
de Agentgonzo :

http://www.orbithangar.com/searchid.php?ID=4159

Tu peux peut-être le faire fonctionner avec VC2005.

Cordialement,,


Syntetik

Je... ce que vous faites là, Tintin, est splendide!... Je... Enfin, bonne chance!... Attention: Je mets le moteur en marche!...
Hergé

Offline Fast_toche

  • Legend
  • ******
  • Posts: 1329
  • Country: France fr
  • Karma: 34
  • Time is nothing...
Reply #13 - 01 January 2010, 23:47:57
super les gars!
;)



Offline Syntetik

  • Sr. Member
  • ****
  • Posts: 287
  • Country: France fr
  • Karma: 3
Reply #14 - 03 January 2010, 00:28:03
Hourra :hot:!

Mon MFD affiche "Bonjour" 8)!

Grace à la fonction TextOut. Mais c'est une fonction de l'API Windows ; je me suis mis à l'étudier sur
le Site du Zéro :

http://www.siteduzero.com/

C'est assez compliqué et en C en plus.

Cordialement,


Syntetik

Je... ce que vous faites là, Tintin, est splendide!... Je... Enfin, bonne chance!... Attention: Je mets le moteur en marche!...
Hergé

Offline tofitouf

  • Legend
  • ******
  • Posts: 1380
  • Karma: 0
Reply #15 - 04 January 2010, 08:59:41
Bonjour syntetik (et bonne année)

youpi un nouveau ptit gars motivé par la programmation de mfd, je pensais être l'un des derniers sur cette planête.
Si tu as de nouveau besoin d'aide n'hésite pas. J'essaierai de te répondre promptement (je n'ai pas eu le net pendant 15
jours mais c'est revenu maintenant.)

Sinon mon MFD Galactic Map est basé sur une librairie qui gère pas mal de chose automatiquement et qui simplifie largement
l'implémentation des MFD avec tout un tas d'outil pour gérer les menus, la sauvegarde, les boutons, les dessins à l'écran,
etc.....

si cela t'interesse mon code est open source ici :

http://sourceforge.net/projects/controlmfd/

et si tu n'arrive pas à le récupérer (svn est pas toujours simple à utiliser) demande moi, je te le poste quelque part.

bon courage


---------------------------------------------

PC en rade, codage en panne.... Nom de Zeus

Offline Syntetik

  • Sr. Member
  • ****
  • Posts: 287
  • Country: France fr
  • Karma: 3
Reply #16 - 05 January 2010, 21:09:07
Merci beaucoup pour tes encouragements,

Pour l'instant je me concentre sur la bibliothèque de l'API Window. Je serais curieux de savoir quelle
bibliothèque tu utilises pour Galactic Map.

Bon courage à toi aussi (et bonne année).

Cordialement

Syntetik


Syntetik

Je... ce que vous faites là, Tintin, est splendide!... Je... Enfin, bonne chance!... Attention: Je mets le moteur en marche!...
Hergé

Offline tofitouf

  • Legend
  • ******
  • Posts: 1380
  • Karma: 0
Reply #17 - 06 January 2010, 10:16:02
j'utilise aussi l'api Windows mais je l'ai encapsulé dans une classe à moi histoire de pouvoir le remplacer rapidement,

J'ai mes propres routines d'affichage et je voudrais les intégrer car elles sont plus précise et rapide que le vieux GDI de
windows. (encore un truc à faire....)

Dès que tu te sens pret, je t'invite à lire les source de la map elle ne sont pas si compliquées et y'a énormément de chose à
reprendre dedans que j'ai programmée indépendantes les unes des autres pour pouvoir les utiliser dans d'autres projets.

par exemple pour créer un menu comme celui de la carte c'est un simple appel de fonction comme celui là

addMenuItem("nom de la ligne");

et tout derrière est géré (la surbrillance, l'activation de la commande, j'ajoute des +1/-1 quand il s'agit d'une valeur
chiffrée, le fait de cacher le menu, le scrolling quand le menu dépasse la taille de l'écran, etc. etc....).

autre exemple plus graphique pour mes trajectoires, je calcule la position de chaque point dans l'univers
et je lance un drawCurve(listedespoints)
et ma classe les repositionne dans l'espace 2D automatiquement et les dessine. Du coup mes notions de zoom et de changement
de point de référence (centre de l'écran) sont fait automatiquement. et je n'ai plus qu'à me préocuper de positionner les
points dans le vrai espace plutot que de me prendre la tête avec des conversion à chaque nouvel objet que je veux dessiner.

bien entendu je te guiderai pas à pas pour chacune de tes questions.

a+



Message modifié ( 09-08-2010 12:50 )

---------------------------------------------

PC en rade, codage en panne.... Nom de Zeus

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #18 - 19 July 2010, 13:08:02
J'suis sur le coup , doc !
;)
Spock....


Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #19 - 01 August 2010, 16:48:33
Donc , je suis sur le coup ...
Je viens de compiler le projet EXTMfd du sdk , compilé et testé dans Orbiter 2006 p1.
Permet d'avoir un MFD en mode fenêtre Windows : Pratique pour du multi-écrans !
Suivi du projet MFD template, qui rajoute une Option dans les MFD standards ->Status " Nominal " !
Je commence à comprendre la logique du SDK , et je projette de continuer ce TOPIC sous la forme d'un didacticiel
 " pas à pas " , une fois que j'aurais acquis l'expérience .
TOUTE AIDE EST LA BIENVENUE .
A+ MrSpock .



Message modifié ( 01-08-2010 17:02 )

Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline Mars Bleu

  • Hero Member
  • *****
  • Posts: 638
  • Karma: 33
Reply #20 - 13 January 2011, 19:30:40
Bonjour à tous les cerveaux hantant ce thread,
Je me sens un peu "noob", ici. Pourtant, je voudrais me pencher sur la programmation
d'un MFD. J'ai commencé par lire ce qu'il y avait sur le thème. En voulant regarder à
http://orbiter.dansteph.com/MonMFD.zip
pour pouvoir avoir un exemple de comment-c'est-fait-tout-ça, j'ai eu un "Error 404, file not found" Rhââ!

Syntetik, jai vu que tu avais réussi à faire afficher "Bonjour" à ton MFD: comment tu fais? Je ne demande
qu'à apprendre! Merci pour tout tuyau.


Offline NLS le pingouin

  • Legend
  • ******
  • Posts: 826
  • Karma: 1
Reply #21 - 14 January 2011, 06:59:05
T'as un (des ?) exemples de codes source de MFD dans la doc du SDK d'orbiter.



Offline tofitouf

  • Legend
  • ******
  • Posts: 1380
  • Karma: 0
Reply #22 - 14 January 2011, 08:52:46
l'exemple de MFD du SDK est un point de départ pour bien comprendre comment cela fonctionne. docn à consulter pour démarrer

l'angentgonzo a, quant à lui, publié un wizard sur orbit hangar qui te crée un premier mfd tout vide.

http://www.orbithangar.com/searchid.php?ID=4159

et moi de mon coté j'ai implémentée toute une librairie orientée objet qui étends les possibilités. en ajoutant menu, notion de hierarchie de pages, animation etc...
C'est la base de mon code pour la galactic map et c'est open source

http://www.orbithangar.com/searchid.php?ID=3992

https://sourceforge.net/projects/controlmfd/

bon courage.



Message modifié ( 14-01-2011 11:57 )

---------------------------------------------

PC en rade, codage en panne.... Nom de Zeus

Offline NLS le pingouin

  • Legend
  • ******
  • Posts: 826
  • Karma: 1
Reply #23 - 14 January 2011, 11:36:46
Bon à savoir ça... Faudra que j'y jette un oeil un de ces quatre. J'ai le projet (doux rêve) de ré implémenter le HUD dans un MFD à part. Chose qui pourrait être, à mon sens, très pratiques dans certains cas (notamment le contrôle d'un satellite à l'aveugle pour rajouter de l'immersion).
Mais vu que j'ai toujours une sorte de flemme de me lancer plus en avant dans l'utilisation de la SDK d'orbiter, ce genre de projet reste en suspend pour l'instant.



Offline tofitouf

  • Legend
  • ******
  • Posts: 1380
  • Karma: 0
Reply #24 - 14 January 2011, 11:59:37
effectivment ma base de code pourrait t'aider.

J'ai fait plusieurs surcouches pour simplifier les recherches de vaisseau, les informations de planète, le calcul des trajectoires d'orbite etc... ca simplifie quelques parties du SDK d'orbiter qui sont parfois obscures.


---------------------------------------------

PC en rade, codage en panne.... Nom de Zeus