IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Transposition de Language C++ vers Windev (SimConnect.dll)


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2007
    Messages : 57
    Par défaut Transposition de Language C++ vers Windev (SimConnect.dll)
    Bonjour à tous,

    Je suis actuellement en train d'écrire en Windev un logiciel de connexion à SimConnect pour récupérer et commander un simulateur (MSFX2020).

    Pour ce faire, j'essaie de retrouver des bots de codes écrits en C++ et les transposer en Windev car je n'ai pas trouver d'exemple ou d'explication pour les appels API de SimConnect.dll en Windev.

    J'ai donc un bout de code et je ne comprends pas très bien certains syntaxes.
    Dans le code ci-dessous j'ai notamment 2 lignes qui me posent problème :

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                    pObjData = (SIMCONNECT_RECV_SIMOBJECT_DATA*)pData;
                    pDataRefs = (DataRefs*)&pObjData->dwData;

    J'ai donc besoin d'information pour savoir ce que fait chaque ligne afin de trouver la syntaxe Windev correspondante.

    Une explication simple me se serait très utile.
    Si vous avez des URL de sites qui traitent de ce sujet ou qui explique en language Windev, ma la manière de faire je serais également très intéressé.

    En vous remerciant d'avance.
    Didier

    Voici la petite routine d'où j'ai extrait ces deux lignes :

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    #include <iostream>
    #include <Windows.h>
    #include "SimConnect.h"
    #include <string>
    #include <sstream>
    using namespace std;
     
     
     
     
    HANDLE hSimConnect = NULL;
     
     
     
     
    enum DATA_DEFINE_ID
    {
        DEFINITION_ID_AP,
    };
     
    enum DATA_REQUEST_ID
    {
        REQUEST_AP_SETTINGS,
    };
     
    enum EVENT_ID
    {
        EVENT_SET_AP_ALTITUDE,
    };
     
     
     
    struct DataRefs
    {
        double altitude;
        double knots;
    };
     
    int main() {
     
            HRESULT hr;
            SIMCONNECT_RECV* pData = NULL;
            DWORD cbData = 0;
            bool bRequestProcessed = false;
            int SelectedAltitude = 0;
            SIMCONNECT_RECV_SIMOBJECT_DATA* pObjData = NULL;
            DataRefs* pDataRefs = NULL;
     
            if (SUCCEEDED(SimConnect_Open(&hSimConnect, "Client Event", NULL, NULL, NULL, NULL))) {
                printf("Connected to MSFS2020!\n");
            }
            else {
     
                printf("Failed to Connect to MSFS2020\n");
     
            }
            //simVars
            hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ID_AP, "PLANE ALTITUDE", "Feet");
     
            // Check simVars
            hr = SimConnect_RequestDataOnSimObject(hSimConnect, REQUEST_AP_SETTINGS, DEFINITION_ID_AP, SIMCONNECT_OBJECT_ID_USER, SIMCONNECT_PERIOD_ONCE);
            if (FAILED(hr))
            {
                printf("RequestDataOnSimObject for AutopilotData structure - error\n");
            }
            bRequestProcessed = false;
            while (!bRequestProcessed)
            {
                hr = SimConnect_GetNextDispatch(hSimConnect, &pData, &cbData);
                if (SUCCEEDED(hr))
                {
     
                    pObjData = (SIMCONNECT_RECV_SIMOBJECT_DATA*)pData;
                    pDataRefs = (DataRefs*)&pObjData->dwData;
     
                    //This line of code is what im referring to
                    printf("\rCurrent  altitude: %.f feet", pDataRefs->altitude);
     
                }
            }
     
            // Close
            hr = SimConnect_Close(hSimConnect);
     
        return 0;
    }

  2. #2
    Membre émérite

    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 431
    Billets dans le blog
    1
    Par défaut
    Je comprends pas trop l'intérêt
    Normalement tu peux mettre directement un code c dans windev

  3. #3
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 933
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 933
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Citation Envoyé par popoy Voir le message
    Normalement tu peux mettre directement un code c dans windev
    C'est le C# que l'on peut intégrer dans le WL.

    En ce qui concerne le C++, il faut voir du côté de la doc Borland ou Microsoft en passant par le K&R (Kernighan & Kernighan The C Programming Language, ISBN 2-10-048734-5)

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 020
    Par défaut
    Moi ce que j'ai le plus de mal à comprendre c'est que si tu as une dll pourquoi ne pas appeler la dll par AppelDLL32 ?

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 564
    Par défaut
    Bonjour,

    SIMCONNECT_RECV_SIMOBJECT_DATA
    est une structure

    même chose pour DataRefs

    mais sans voir le code du header correspondant, c'est difficile de vous aider.

  6. #6
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2007
    Messages : 57
    Par défaut
    Bonjour et merci encore pour vos réponses.

    Pourquoi ne pas intégrer un code C# ? : Ce n'est pas un code autonome que je veux utiliser, il y a des dépendance et celui que j'ai mis n'est qu'une fraction. Je n'ai pas assez de connaissance en C# ou C++ pour me permettre une utilisation complexe. De plus je ne sais pas trop gérer les passages de paramètres avec ces fonctions en C#.

    Pourquoi ne pas appeler une DLL (API) ? : c'est bien ce que je veux faire, mais il me faut la bonne syntaxe de Windev par rapport aux valeurs attendues par la DLL et surtout le format tout en sachant ce que je dois faire. c'est la raison de ma question.

    Ceci dit j'ai une autre solution pour faire ce que je veux faire : utiliser un assemblage .NET dont il m'est possible de l'utiliser comme des classes.
    D'ailleurs cela m'amène a une autre question pour l'assemblage .NET
    Dans cet assemblage j'ai une Classe "Offset" et j'ai l'utilisation de cette classe en C# de cette manière :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    Offset<int> airspeed = new Offset<int>(0x02BC);

    Quelle est la syntaxe Windev correspondante pour cette syntaxe de C# ?

    Merci encore pour votre aide.

Discussions similaires

  1. Migration Acess vers Windev 11 ou 12
    Par kommen dans le forum Access
    Réponses: 3
    Dernier message: 31/01/2008, 11h57
  2. [Windev 11] Migration VB6 vers Windev
    Par sterix92 dans le forum WinDev
    Réponses: 4
    Dernier message: 26/12/2007, 15h57
  3. extraction vers windev --> ajout d'espaces à droite
    Par Arnaud M dans le forum Informix
    Réponses: 3
    Dernier message: 26/03/2007, 09h51
  4. Migration WinDev 7 vers WinDev 8
    Par amarni dans le forum WinDev
    Réponses: 7
    Dernier message: 13/10/2006, 18h58
  5. Traduction des Union C/C++ vers Delphi (usage DLL)
    Par Crafton dans le forum Langage
    Réponses: 6
    Dernier message: 22/02/2006, 08h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo