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

MFC Discussion :

[MFC/Outlook] Problème de fonction CUserProperties::Find()


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Par défaut [MFC/Outlook] Problème de fonction CUserProperties::Find()
    Bonjour,
    Actuellement en travail sur un projet MFC / Outlook, je tente d'accéder à un champ personnalisé (rajouter sur les contacts) que j'ai créé à la main dans outlook.
    Pour ce faire, j'ai fait un programme MFC qui utilise le modèle objet de Outlook. Pour l'instant, j'arrive à récupérer les contacts (CContactItem) à lire les champs qui sont de base de Outlook (Nom, Prénom, etc...), mais impossible de récupérer ce fameux champ perso.

    Après plusieurs recherches ainsi que de l'aide de Developpez.com, je me suis orienté vers la classe CUserProperties qui semblerait être la solution.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    VARIANT vVariant;
    vVariant.vt = VT_BOOL;
    vVariant.boolVal = FALSE;
    
    CContactItem spContactItem(spItem.GetFirst());
    CUserProperties spUserProperties = spContactItem.get_UserProperties();
    CUserProperties spChamp = spUserProperties.Find(_T("Toto"), vVariant);
    C'est apparment la fonction "Find" qui permet de rechercher un champ par son nom à partir de l'objet de type CUserProperties qui vient lui même d'un objet CContactItem.

    Le problème est que peu importe le nom de champ que je donne à "Find", elle ne génère pas d'erreur (à l'exécution) à partir du moment ou le deuxième paramètre est à "vrai".
    Dès que je passe ce dernier à "faux", elle génère l'erreur (à l'exécution) "Nom inconnu" (même si je cherche les champs Nom ou Prénom de base dans Outlook).

    Je ne comprend pas trop ce qui ce passe. Si quelqu'un peut m'aider.

    J'ai trouver ceci si ça peut vous aider : http://msdn2.microsoft.com/en-us/library/bb207097.aspx

    Merci.

  2. #2
    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
    Note: Il ne faut pas utiliser TRUE et FALSE mais VARIANT_TRUE et VARIANT_FALSE.

    Note2: L'objet retourné doit être de type CUserProperty et non CUserProperties.
    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.

  3. #3
    Membre éclairé Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Par défaut
    Bonjour,
    Effectivement cela fonctionne, maintenant j'ai un objet de type CProperty, je souhaite afficher sa valeur avec la fonction "get_Value".
    Cette fonction renvoie un VARIANT.
    Comment dois-je faire pour afficher cette valeur ?

    Merci beacoup.

  4. #4
    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
    Tu dois lire le type du variant (champ vt) et afficher le champ correspondant (si c'est un type affichable).
    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.

  5. #5
    Membre éclairé Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Par défaut
    ReBonjour,
    Je vien de regarder avec le debug, c'est bon il contient la valeur du champ que je souhaite.

    Seulement, je voudrais récupérer un string ou quelque chose qui peut s'afficher. Variant peut me donner du BSTR, est-il possible de transformer ce BSTR en string ou char * ?

    Merci pour tout.

  6. #6
    Membre éclairé Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Par défaut
    C'est bon ça fonctionne.
    Sujet résolu !

    En fait je peux directement coller du BSTR dans un CString et l'afficher.

    Merci pour tout Medinoc, heureusement que tu es la

  7. #7
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Note: Il ne faut pas utiliser TRUE et FALSE mais VARIANT_TRUE et VARIANT_FALSE.
    Mea culpa...

  8. #8
    Membre éclairé Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Par défaut
    Citation Envoyé par PetitPapaNoël Voir le message
    Mea culpa...
    Merci quand même, ça ma permit de trouver une piste.

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

Discussions similaires

  1. Problème avec la fonction Cells.Find
    Par petole dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/01/2012, 16h29
  2. [XL-2003] Problème avec fonction Find
    Par RussellD dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/09/2010, 12h46
  3. Réponses: 8
    Dernier message: 07/05/2008, 09h57
  4. Réponses: 2
    Dernier message: 28/04/2008, 14h48
  5. [MFC][WINSOCK] Problème avec fonction recv
    Par Le Farfadet dans le forum MFC
    Réponses: 4
    Dernier message: 23/09/2005, 11h00

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