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 :

conversion / utilisation _variant_t


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de sly078
    Inscrit en
    Avril 2008
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 116
    Par défaut conversion / utilisation _variant_t
    Bonjour,

    J'utilise une méthode setAttribute de MSXML qui prend un _bstr_t et un const _variant_t en arguments.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    HRESULT setAttribute (
            _bstr_t name,
            const _variant_t & value );
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pPlayitemButton->setAttribute("x-pos","45%");
    ajoute un attribut x-pos dont la valeur est 45% à l'élément pointé par pPlayitemButton1.

    je cherche à ne plus mettre directement une chaîne de caractères dans le second argument. J'ai essayé plusieurs choses. Ces deux là compilent mais bug lors de l'exécution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CString strx;
    strx.Format("45%");
    _variant_t vt;
    vt.SetString(strx);
    pPlayitemButton->setAttribute("x-pos",vt);
     
    ou
     
    CString strx;
    strx.Format("45%");
    pPlayitemButton->setAttribute("x-pos",_variant_t(strx));
    Mais bien sûr ceci marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const char * c = "10%";
    pPlayitemButton->setAttribute("x-pos",c);
    Que puis-je faire pour utiliser correctement ce _variant_t ou pour convertir un std::string ou un CString en _variant_t ?

    Merci,

    Sly

  2. #2
    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,
    Je réponds de mémoire donc je vais peut être dire une bêtise, mais je crois qu'il faut que tu passes par une BSTR (CString::AllocSysString).

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Si j'en crois l'aide, tu peux faire tout simplement ceci:
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    std::string strx = "45%";
    pPlayitemButton->setAttribute("x-pos",_variant_t(strx.c_str()));
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre confirmé Avatar de sly078
    Inscrit en
    Avril 2008
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 116
    Par défaut
    Merci pour vos réponses. effectivement Médinoc, ça fonctionne. Pour ce que je voulais faire ça donne :

    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
    17
    18
    19
    20
    21
    22
    23
    24
     
    MSXML2::IXMLDOMElementPtr pPlayitemButton[32];
    for (int i=0;i<8;i++)
    	for (int j=0;j<4;j++)
    	{
    		int x,y;
    		x=10*i+5;
    		y=10*j+5;
     
    		ostringstream ox, oy;
    		string strx,stry;
     
    		ox<<x;
    		oy<<y;
     
    		strx=ox.str()+'%';
    		stry=oy.str()+'%';
     
     
    		pPlayitemButton[j+8*i] = pDocument->createElement ("playitem-button");
    		pPlayitemButton[j+8*i]->setAttribute("x-pos",_variant_t(strx.c_str()));
    		pPlayitemButton[j+8*i]->setAttribute("y-pos",_variant_t(stry.c_str()));
    		pCustomLayout->appendChild (pPlayitemButton[j+8*i]);
    	}
    Résolu !

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

Discussions similaires

  1. Conversion UTF8 et utilisation de WideCharToMultiByte()
    Par Frank38 dans le forum Visual C++
    Réponses: 5
    Dernier message: 30/09/2008, 14h25
  2. Utilisation des Nested Conversations
    Par jlemoine dans le forum Seam
    Réponses: 13
    Dernier message: 29/05/2008, 16h19
  3. conversion binaire-décimal sans utiliser le tableau
    Par ahmed doua dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 13/03/2006, 10h54
  4. [MFC]Utilisation d'un SLIDER , problème de conversion
    Par sylvain_c42 dans le forum MFC
    Réponses: 1
    Dernier message: 10/05/2005, 14h31
  5. "conversion" _variant_t en CString
    Par kam dans le forum MFC
    Réponses: 4
    Dernier message: 09/03/2005, 17h41

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