begin process at 2012 05 29 15:05:37
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

passer un LPCSTR de VC++ à VB


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

passer un LPCSTR de VC++ à VB

mercredi 10 août 2005 à 18:38:39 | passer un LPCSTR de VC++ à VB

Radium The Hammer

    Bonjour,
comme vous vous en doutez j'ai un problème de programmation.
j'ai créé un fichier ocx avec VC++ que j'utilise dans VB comme bibliothèque.
Dans mon ocx je voudrais créer une fontion qui renvoit une string que je pourrais récupérer dans une variable VB.
Le problème est que je n'arrive pas à récupérer cette variable. Dans l'autre sens il n'y a aucun problème, les paramètres
des fonctions de l'ocx donné dans VB fonctionne très bien.

lorsque je fais afficher la valeur dans une msgbox dans vb j'obtiens des ??????

Je vous donne la fonction que j'utilise dans VC++
LPCSTR maclasse::GetResponse( VOID )
{
    return (LPCSTR)Response.c_str();
}

Response étant une string dont je set la valeur par ailleurs (si j'affiche la valeur de Response depuis le C++ la valeur est correcte).

pour déclarer ma fonction dans le fichier .cpp j'utilise
DISP_FUNCTION(maclasse, "GetResponse", GetResponse, VT_BSTR, VTS_NONE)

pour déclarer ma fonction dans le fichier .h j'utilise
afx_msg LPCSTR GetResponse ( void);
et
dispidGetResponse  = 48L,

dans mon fichier odl j'utilise
[id(48)] BSTR GetResponsereceived ( void);

l'appelle dans VB est le suivant
MsgBox myDisp.GetSCAreceived()

si quelqu'un a une idée je suis preneur.
j'espère avoir était assez clair mais si ce n'est pas le cas n'hésitez pas à me demander plus de détail

Merci


mercredi 10 août 2005 à 19:22:28 | Re : passer un LPCSTR de VC++ à VB

BruNews

Administrateur CodeS-SourceS
TRAITER STRING VB PAR DLL C/C++ (WIN32)
http://www.cppfrance.com/code.aspx?ID=30115

ciao...
BruNews, MVP VC++
jeudi 11 août 2005 à 16:10:42 | Re : passer un LPCSTR de VC++ à VB

Radium The Hammer

Merci pour le lien (que je n'avais pas trouvé, j'avais pourtant cherché avant de poster)
mais ça ne marche pas avec mon ocx.
j'ai changé ma fonction qui renvoit ma valeur créer en C++ par
return SysAllocString((BSTR)Resp->GetResponse().c_str());

et j'ai changé tous les LPCSTR en BSTR mais j'obtiens toujours des ?? dans la messagebox.

je pense que la différence peut venir du fait que je n'utilise pas une dll mais un ocx.
je ne peux pas changer et utiliser une dll, c'est imposé dans mon stage.

je précise aussi que cette erreur n'arrive que pour des string car les bool et les long passent très bien de l'ocx au vb.

si tu as une autre idée spécifique au ocx ou si tu pense que je n'ai pas fait les bons changements ça m'intéresse.
Sinon tant pis et merci quand même.


jeudi 11 août 2005 à 16:24:24 | Re : passer un LPCSTR de VC++ à VB

BruNews

Administrateur CodeS-SourceS

SysAllocString((BSTR)Resp->GetResponse().c_str());
c'est quoi ce cast mystique (BSTR) ???

Procède donc sur ce modèle:
BSTR __stdcall bnGetWinDir()
{
  char buff[260];
  DWORD len;
  len = GetWindowsDirectory(buff, 260);
  if(!len) buff[0] = 0;
  return SysAllocStringByteLen(buff, len);
}

ciao...
BruNews, MVP VC++

jeudi 11 août 2005 à 16:31:37 | Re : passer un LPCSTR de VC++ à VB

xterminhate

Membre Club
Pas bien le cast. Utilise plutot un reinterpret_cast() pour laisser ton compilateur C++ vérifier ta sauce.
jeudi 11 août 2005 à 16:46:10 | Re : passer un LPCSTR de VC++ à VB

BruNews

Administrateur CodeS-SourceS
Mais il n'y a rien à vérifier, il faut de l'OLECHAR unicode à SysAllocString et pas autre chose.

ciao...
BruNews, MVP VC++
vendredi 19 août 2005 à 11:34:37 | Re : passer un LPCSTR de VC++ à VB

Radium The Hammer

je n'ai pas réussi avec les méthodes que vous m'avez donné
mais en utilisant la fonction suivante pour convertir ça marche.
je converti ma string avec la fonction suivante et j'envoie le BSTR obtenu dans VB et ça marche.
si j'ai bien compris cela converti ma string en unicode.


BSTR maclasse::convert2unicode( string ansi_string)
{
    int lenA = lstrlenA((LPCSTR)ansi_string.c_str());
    int lenW;
    BSTR unicodestr;

    lenW = ::MultiByteToWideChar(CP_ACP, 0, (LPCSTR)ansi_string.c_str(), lenA, 0, 0);
    // Check whether conversion was successful
    unicodestr = ::SysAllocStringLen(0, lenW);
    ::MultiByteToWideChar(CP_ACP, 0, (LPCSTR)ansi_string.c_str(), lenA, unicodestr, lenW);
   
    return unicodestr;
}

Merci pour votre aide


Cette discussion est classée dans : fichier, vb, utilise, vc, lpcstr


Répondre à ce message

Sujets en rapport avec ce message

ouvrir un fichier .wav sous Vc++ .....:-( [ par kinder ] hi !J'voudrais lancer un son (.wav de préferance) en exécutant un programme compillé par Vc++... Si y a un sauveur sur le web... Je suis ouvert à tout Problème avec CListBox [ par amel ] Bonjour a tous,Je suis en train de creer une application sous Visual C avec les MFC. J'utilise une CListBox dans laquelle j'affiche une liste d'elemen Fonction "Remplacer Tout" pour un fichier (VC++.Net) [ par milobac ] J'aimerais créer un programme, en VC++.Net, qui remplace une chaîne, à chaque fois qu'elle est détecté dans un fichier, par une autre.En quelque sorte fichier def en VC++ [ par andrealphus ] 4ndr&@lphu$bonjour bonjour !voila j'ai un probleme avec un fichier .def ! j'en ai absolument besoin mais si je l'insère dans mon projet, le compilateu Enregistrer/ouvrir fichier vc++ 6 [ par apientry ] Au secours!J'ai un gros probleme, je n'arrive pas à enregistrer un fichier (txt par ex), comment faire? je sais comment apeler la boite de dialogue, G BESION D'UN FICHIER VC++ [ par Ricpperso ] Bonjour, j'ai mon fichier Nafxcw.lib, il est livrer avec Visual C++ 6, or, le probléme, c'est que ce fichier a bugger, il me faudrait un sain. Est-ce Pb de génération du fichier setup de mon appli avec VB.NET [ par sebseb27 ] Salut à tousComme le titre du message l'indique, j'ai un pb !!Lorsque je lance la génération de mon fichier setup, je reçois un message qui me dit que récupération de données excel avec vb.net et bascule vers un fichier unique .txt [ par coeurdenoir ] Bonjour,je suis un débutant alors ne soyez trop dur avec moi.Voila je travaille sur un projet informatique et aujourd'hui je bloque sur un point qui DLL en VC++ avec tableau en parametres ? [ par JoePatent ] http://www.joepatent.comJoe PatentJe me suis fait une DLL en VC++ qui est appelé par une application en VB 6.0Tout fonctionne bien sauf pou Oracle OCI ou fichier ? [ par PunkDude424 ] salut, je voudrais faire un programme et avoir la possibilité qu'il sois billingue, alors je me demandais se que j'était mieux de faire, mon programme


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,920 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales