un tit souci de pointeur

un tit souci de pointeur - C++ - Programmation

Marsh Posté le 13-05-2006 à 16:36:16    

Bonjour
 
j'ai un projet sans erreur de compil mais il ne fait pas ce que je veux parce qu'il n'a qu'une ligne que je n'arirve pas à définir correctement. je ne sias pas comment déclarer le pointeur ou le mettre en place.
 
c'est cette fonction
 

Code :
  1. HDDEDATA DdeClientTransaction(  // aide msdn   
  2.     LPBYTE pData, // là je bloque
  3.     DWORD cbData,
  4.     HCONV hConv,
  5.     HSZ hszItem,
  6.     UINT wFmt,
  7.     UINT wType,
  8.     DWORD dwTimeout,
  9.     LPDWORD pdwResult
  10. );


 
 j'ai une case IDC_EDIT1 avec une valeur "m_Val" de type CString.
 
je veux envoyer une donnée pour écriture sur un serveur dans une case de valeur "Value" de type CString.
 
dans mon programme client, j'ai mis donc le code suivant correspondant au bouton (tout à la fin)
 

Code :
  1. Item=DdeCreateStringHandle
  2.             (
  3.             pidInst,
  4.             m_Item,
  5.             CP_WINANSI
  6.             );
  7.         DdeClientTransaction
  8.             (
  9.             (LPBYTE)(LPCTSTR)ItemValue,  // bloqué
  10.             strlen(ItemValue)+1,
  11.             hconv,
  12.             Item,
  13.             (UINT) CF_TEXT,
  14.             (UINT) XTYP_POKE,
  15.             (DWORD) 1000,
  16.             NULL
  17.             );
  18.         DdeFreeStringHandle(pidInst, Item);


 
et j'ai mis tout en haut en globale dans mon programme
char ItemValue[50]="m_Val";
 
==> aucune erreur de compil, dans mon projet je reçois des valeur mais ne peux en envoyer, pourriez vous me dire comment je pourrai envoyer la valeur de la case sur le serveur, cad comment faire que la valeur soit pointée par un pointeur ItemValue
 
je me suis aidé de cette page pour faire mon programme :
http://support.microsoft.com/defau [...] r%3B279721
je n'utilise pas d'excel, c 2 exécutables. et c des MFC sous visual c++
 
voilà
Je vous remercie d'avance pour votre aide.
 
----------------------------------------------
 
pour information, le haut du code c'est  

Code :
  1. // client : m_Val, m_Double, m_Triple et serveur : Value, Double, Triple
  2. // nav_clientDlg.cpp : implementation file
  3. //
  4. #include "stdafx.h"
  5. #include "nav_client.h"
  6. #include "nav_clientDlg.h"
  7. #include <ddeml.h> // rajout
  8. #include <time.h>
  9. #include <windows.h>
  10. #ifdef _DEBUG
  11. #define new DEBUG_NEW
  12. #undef THIS_FILE
  13. static char THIS_FILE[] = __FILE__;
  14. #endif
  15. //déclaration de la fonction callback
  16. HDDEDATA CALLBACK DdeCallback(
  17.   UINT uType,     // transaction type
  18.   UINT uFmt,      // clipboard data format
  19.   HCONV hconv,    // handle to the conversation
  20.   HSZ hsz1,       // handle to a string
  21.   HSZ hsz2,       // handle to a string
  22.   HDDEDATA hdata, // handle to a global memory object
  23.   DWORD dwData1,  // transaction-specific data
  24.   DWORD dwData2   // transaction-specific data
  25. );
  26. DWORD pidInst;
  27. PFNCALLBACK pfnCallback;
  28. HSZ Item,Topic,Service;
  29. HDDEDATA hData;
  30. HCONV hconv;
  31. DWORD size;
  32. PSTR psz;
  33. char ItemValue[50]="m_Val";  //////////////// m_Val?

Reply

Marsh Posté le 13-05-2006 à 16:36:16   

Reply

Marsh Posté le 13-05-2006 à 18:24:18    

une ptite aide svp?
j'ai trop cherché et c la dernièreligne avant que mon prog soit fini.
 
vous pouvez poser des questions si y a des trucs pas clairs

Reply

Marsh Posté le 13-05-2006 à 22:01:16    

up

Reply

Marsh Posté le 14-05-2006 à 00:24:18    

j'ai trouvé qqch :
char* ItemValue=(char*)LPCTSTR(m_Val);
 
le souci est qu'il prend uniquement une valeur prédéfinie  
m_Val = _T("5" );
DDX_Text(pDX, IDC_EDIT1, m_Val);
ON_EN_CHANGE(IDC_EDIT1, OnChangeEdit1)
==> au démarrage il y a une case préremplie avec une valeur de 5
moi je démarre le programme je met une valeur de 7 ou 8 ou 2 ou 10, c moi qui choisit et je veux l'envoyer or mon programme ne prend que la valeur prédéfinie.
m_Val est de type class CString
 
en fait je chercher à récupérer cette valeur modifiée dans IDC_EDIT1 (une case genre Edit Box)
 
j'iamerai votre aide sur la mise en place des fonctions suivante qui me seront utiles je pense.
hItemValue = GetDlgItem(hWnd, IDC_EDIT1);
et/ou un  
GetWindowText(hItemValue,pDDE.ItemValue,500);
 
ou si vous savez comment faire pour récupérer cette valeur modifiée dans IDC_EDIT1  
 
Merci

Reply

Marsh Posté le 14-05-2006 à 02:36:07    

probleme résolu
 
 UpdateData();
 char* ItemValue=(char*)LPCTSTR(m_Val); // ça marche avec la valeur par défaut de m_Val
                                        // donc je met à jour tout cela
 UpdateData(FALSE);
 
@+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed