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 :

Convertir une variable char * en une variable de type LPCTSTR


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2012
    Messages : 5
    Par défaut Convertir une variable char * en une variable de type LPCTSTR
    Bonjour,

    Pour un projet je doit afficher une variable dans l environnement GDI, pour se faire j'utilise la fonction TextOut(...). J arrive a afficher correctement une chaine de caractere entré directement dans la fonction mais lorsque j essaye avec une variable cela ne fonctionne pas.

    La version qui marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextOut(HDC,100,100, _T("chaine"),13);
    Ce que je voudrais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int entier = 7 ; // cette valeur pourrait changer
    char chaine [4];
    sprintf(chaine, "%d" , entier);
    TextOut(HDC,100,100, _T(chaine),13);
    Mais j ai une erreur me disant pour la fonction _T(...) : Identifier "Lchaine is undefined.

    Merci d'avance pour votre aide

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Par défaut
    Pourquoi ne pas utiliser les fonctions de tchar.h de bout en bout ?
    (pas testé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TCHAR chaine [4];
    _stprintf(chaine, "%d" , entier);
    TextOut(HDC,100,100, chaine,13);

  3. #3
    Rédacteur/Modérateur


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

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    Identifier "Lchaine is undefined.
    _T est une macro qui ajoute le L devant la chaîne pour la transformer en LPCTSTR.

    je pense qu'utiliser des LPCTSTR tout le temps serait le plus simple.

    Cela dit, Google m'a fourni ce lien qui possède ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <stdlib.h>
     
    #if defined(UNICODE)
    #define my_mbstotcs(tcs,mbs,count) mbstowcs((tcs),(mbs),(count))
    #define my_tcstombs(mbs,tcs,count) wcstombs((mbs),(tcs),(count))
    #else
    #define my_mbstotcs(tcs,mbs,count) strcnpy((tcs),(mbs),(count)) 
    #define my_tcstombs(mbs,tcs,count) strcnpy((mbs),(tcs),(count))
    #endif
     
    // usage: 
    // const char* in = "this is a test";
    // LPCTSTR out = new TCHAR[strlen(in)+1];
    // my_mbstotcs(out, int, strlen(in)+1);
    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.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2012
    Messages : 5
    Par défaut
    J ai pas d'erreur marqué sur le TextOut par contre j en ai une sur _stprintf que je ne comprend pas tres bien : "Error: no instance of overloaded function "swprintf" matches the argument list"

  5. #5
    Rédacteur/Modérateur


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

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Et quel est ce code erroné utilisant _stprintf ?

    Surtout que le message est pourtant clair.

    http://msdn.microsoft.com/fr-fr/libr...(v=vs.80).aspx
    http://msdn.microsoft.com/en-us/libr...(v=vs.71).aspx
    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.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2012
    Messages : 5
    Par défaut
    Merci pour les liens, j avais écrit le define dans le mauvais sens...

    Malheureusement _stprintf ne fonctionne pas comme ca en tout cas. Donc j ai regardé mais je ne voix pas ou je dois mettre mon entier pour le convertir.

    Merci de votre aide

  7. #7
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Rappel en C++ on utilise les flux :
    Code : 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
    #include <iostream>
    #include <string>
    #include <sstream>
    #include <windows.h>
     
    int main()
    {
        int const entier = 7;
        std::wostringstream woss;
        woss<<entier;
        std::wstring const chaine = woss.str();
        HDC h=0;
        TextOut(h,100,100,chaine.c_str(),13);
     
        return 0;
    }

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

Discussions similaires

  1. Utiliser une variable char dans une condition
    Par cedriclv dans le forum C
    Réponses: 6
    Dernier message: 11/06/2014, 18h38
  2. Modif d'une variable char* dans une fonction
    Par kase74 dans le forum Débuter
    Réponses: 4
    Dernier message: 22/01/2009, 08h31
  3. Réponses: 27
    Dernier message: 03/01/2008, 11h07
  4. [Smarty] nom de variable composé d'une chaîne et d'une variable
    Par Philoulheinz dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 17/05/2007, 10h13
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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