Je dois envoyer une valeur VARIANT à une autre application en utilisant COPYDATASTRUCT. Voici la structure que j'utilise pour envoyer des messages.comment envoyer VARIANT_bstr sur COPYDATASTRUCT
struct {
int i_MsgId;
VARIANT variant_Value;
}Message;
Dans mon code, j'initialise le VARIANT pour taper BSTR et allouer une chaîne comme suit. Puis je l'envoie en utilisant COPYDATASTRUCT comme suit.
COPYDATASTRUCT structCDS;
structCDS.cbData = sizeof(structMessage);
structCDS.dwData = 12;
structCDS.lpData = (LPVOID)(&structMessage);
::SendMessage(this->m_RemoteWindow,WM_COPYDATA,(WPARAM)this->GetSafeHwnd(),(LPARAM)&structCDS);
Ce message reçoit avec succès à ma deuxième application, cependant, quand je l'ai jeté retour à la « bstrVal » struct original, indique un mauvais pointeur. Je suis aux prises avec cette erreur, alors j'attends votre aide précieuse. S'il vous plaît noter que d'autres types varinat (int, double) peuvent être convertis avec succès, et cette erreur ocus seulement avec bstr. :(
Merci Vous