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

C++ Discussion :

Utiliser et déclarer les API en C++


Sujet :

C++

  1. #1
    Invité
    Invité(e)
    Par défaut Utiliser et déclarer les API en C++
    Bonjour à tous,
    Je commence le C++ avec Qt (mon IDE est Qt creator).

    En Visual Basic, j'utilisais très souvent les API Windows, et je me demande comment les utiliser en C++

    Je suis tombé sur pleins de tutoriels, mais aucun ne me semble compréhensible.

    Voilà, j'ai plusieurs question :

    1 - Faut-il importer une librairie ou quoi que se soit pour utiliser les API ?
    2 - Comment déclarer les API en C++ ?
    3 - Comment les utiliser.

    Par exemple pour GetAsyncKeyState de "user32.dll", comment dois-je m'y prendre ?

    Perso, en VB.NET, je faisait comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As IntPtr) As IntPtr
    En vous remerciant

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Salut

    Attention quand on vient d'un autre langage, les pratiques que l'on utilisait ne sont plus forcement recommandées. Il est préférable d'apprendre le langage en suivant un cours que d'essayer de refaire "comme on faisait avant"

    Pour répondre à la question, il faut juste inclure le header correspondant (la doc indique que c'est <windows.h>). Pour son utilisation, il suffit également de lire la doc...

    Ceci étant dit, oublie ce que je viens de dire. En C++, soit tu es en mode console et tu utilises std::cout et std::cin, soit tu es en mode graphique (avec une lib externe, ce qui est ton cas si tu utilises Qt) et tu utilises la lib graphique
    En l’occurrence, Qt permet de gérer les events clavier, mais fournit également des outils haut niveau (bouton, zone de saisie, dialogue, etc) pour ne pas avoir à gérer directement les event clavier

    Bref, à lire :
    Bien débuter en C++

    Débuter dans la création d'interfaces graphiques avec Qt 4

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour ta réponse

    Dans les deux tutoriels, aucun ne parle des API...

    GetAsyncKeyState était un exemple, je parle des API en général.
    Par exemple SendMessage, SetWindowPos ...

    Et si jamais j'utilisai GetAsyncKeyState ce serai pour récupérer une action effectué sur une autre fenêtre que mon programme Qt.

    C'est déjà bien, je sais quoi importer pour utiliser les API :

    Sinon, j'ai oublié de le préciser : Je ne suis pas totalement un débutant, j'ai suivis des tutoriels C++, donc je me débrouille quand même un peu.

    Et que j'utilise Qt ou pas, cela ne change rien sur les API il me semble, a pare que le programme ne sera plus portable (Linux et Mac).

    Pourrais-tu me donner un petit exemple (d’utilisation / déclaration) d'API ?
    Dernière modification par Invité ; 10/01/2013 à 18h34.

  4. #4
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Je suis pas sur que tu utilises le terme API correctement...

    Il s'agit simple d'une bibliothèque système de windows, elle s'utilise comme n'importe quelle bibliothèque (include de l'en-tête, link de la lib). Tu trouveras les ressources dans la FAQ win32 par exemple ou les tutoriels sur win32.

    Et que j'utilise Qt ou pas, cela ne change rien
    Ca change que l'on ne doit pas apprendre plusieurs API pour chaque système, ça change que l'on apprend pas une API dinosaure, mais une lib moderne, ça change que c'est beaucoup plus facile à utiliser, etc

    Donc a part si c'est pour faire volontairement de la programmation système, je te conseille d'utiliser Qt (ce qui n'est pas ton cas j'espère, parce que utiliser une lib est quand même un élément de base à connaître quand "on se débrouille un peu" en C++ ; et que si c'est le cas, c'est pas forcement une bonne idée, tu vas galérer à faire de la programmation système si tu as des lacunes en C++)

    Bon courage

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci pour le lien, c'est exactement ce que je cherchais, pleins d'exemples et d'explications !
    Bonne soirée

  6. #6
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Pourrais-tu me donner un petit exemple (d’utilisation / déclaration) d'API ?
    Tout en haut à droite de la page de Developpez, tu as un lien de recherche. Avec GetAsyncKeyState, tu as plein de réponses intéressantes, dans les tutos, la faq et les forums :
    Comment tester l'état d'un bouton ou d'une touche ?
    Comment récupérer le statut des boutons de la souris ?
    Détection du clavier
    etc.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Pour ceux qui se pose la même question que moi sur l'utilisation des API :

    En faite c'est tout bête
    Il suffit juste d'inclure la LIB !

    Pas besoin de déclarer chaque API séparément !
    Vive le C++

    Et ensuite, on utilise l'API comme on a l'habitude :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <windows.h>
    #include <iostream>
     
    int main()
    {
         HWND MonHandle = GetForegroundWindow();
         std::cout << "Le Handle de la fenetre active : " << MonHandle << "\n";
         system("PAUSE");
         return 0;
    }
    Trop biiiennn

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Bonsoir,
    Citation Envoyé par Patak Voir le message
    Pas besoin de déclarer chaque API séparément !
    Que veux-tu dire par là ?
    Une API ne se déclare pas, elle s'utilise, en disant au linker où la trouver.
    Ensuite, il convient d'inclure les header nécessaires à sa définition, qui déclarent les types, méthodes, ... que l'on veut utiliser.

    D'ailleurs sous visual, tu peux aussi tout simplement les gérer via les dépendances entre projet au sein d'une même solution. Dans le cas où tu la lies statiquement (.lib uniquement, contrairement au linkage dynamique qui nécessite la dll à côté de l'exe également).

    Et tu peux en utiliser autant que tu veux, moyennant d'éviter les conflits.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser un controle activeX directement via les API
    Par sivaller dans le forum Windows
    Réponses: 2
    Dernier message: 31/05/2009, 12h45
  2. utiliser les API d'eclipse
    Par Pascale38 dans le forum Eclipse Platform
    Réponses: 0
    Dernier message: 18/08/2008, 11h00
  3. comment utiliser les API avec Perl?
    Par megapacman dans le forum Langage
    Réponses: 5
    Dernier message: 23/08/2006, 15h18
  4. []Recuperer le nom d'un contact en utilisant les API msn ?
    Par trotter dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 09/10/2005, 22h07
  5. (Débutant API) Utilisation de Richedit avec les APIs
    Par LibrairieSI dans le forum Windows
    Réponses: 2
    Dernier message: 10/08/2005, 16h53

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