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 :

Composant ATL COM


Sujet :

MFC

  1. #1
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    12
    D�tails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 12
    Par d�faut Composant ATL COM
    J'ai cr�� un composant COM, avec une interface graphique.

    J'ai un champ long m_lValeur dans mon objet COM, que je peux acc�der depuis l'ext�rieur. J'ai mis un trace dans l'objet COM dans les fonctions get et set permettant l'acc�s � mon champ long. Les donn�es pass�es dans l'objet COM par mon prog test ext�rieur sont equivalentes.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    /////////////////////////////////////////////////////////////////////////////
    STDMETHODIMP CVideoPlayer::get_Valeur(long *pVal)
    {
    	*pVal = m_lValeur;
    	ATLTRACE(_T("get_Valeur::m_lValeur = %d\n"), m_lValeur);
    	return S_OK;
    }
     
    STDMETHODIMP CVideoPlayer::put_Valeur(long newVal)
    {
    	m_lValeur = newVal;
    	ATLTRACE(_T("put_Valeur::m_lValeur = %d\n"), m_lValeur);
    	return S_OK;
    }
    Dans .IDL :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    interface IVideoPlayer : IDispatch
    	{
    		[propget, id(1), helpstring("property Valeur")] HRESULT Valeur([out, retval] long *pVal);
    		[propput, id(1), helpstring("property Valeur")] HRESULT Valeur([in] long newVal);
    	};
     
    /////////////////////////////////////////////////////////////////////
    Mais, lorsque j'utilise ce champ long m_lValeur dans d'autres fonctions, comme dans une gestion d'�venement (OnBtnClick), le champ n'est pas rempli, il ne correspond pas � la donn�e pass�e par le Set.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //////////////////////////////////////////////////////////////////////////
    LRESULT OnClickedBtnplay(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
    	{
    		CWindow hEdit;
    		TCHAR str[20];
    		m_lValeur++;
    		ATLTRACE(_T("OnClickedBtnplay::m_lValeur = %d\n"), m_lValeur);
    		wsprintf(str, _T("%ld"), m_lValeur);
    		hEdit = GetDlgItem(IDC_EDTMEDIA);
                    hEdit.SetWindowText(str);
     
    		return 0;
    	}
    Merci de votre aide.

  2. #2
    Membre �m�rite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par d�faut
    Montre le *.h de ton objet COM.

  3. #3
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    12
    D�tails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 12
    Par d�faut
    J'ai trouv� le Bug, en faite c'est dans l'utilisation de l'objet COM dans un projet MFC. Il ne s'utilise pas de la m�me facon si il est uniquement algorithmique ou graphique.

    La mise en oeuvre des objets COM n'est vraiment pas pratique en C++.

    Merci.

  4. #4
    Membre �m�rite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par d�faut
    Quand tu parles de "graphique" tu fais allusion � un contr�le ActiveX (= COM + support graphique)

    Citation Envoy� par vanes92
    La mise en oeuvre des objets COM n'est vraiment pas pratique en C++.
    Je ne vois pas un langage aussi souple dans toutes les constructions orient�-objets possibles tel que le C++ qui puisse impl�menter la philosophie de COM dans toutes ses caprices.

    Le but de ATL �tait de faciliter la programmation des objets COM en abordant les interfaces COM comme classes de base multiples. Et je crois (avis personnel) qu'il le fait mieux que MFC. Alors que MFC impl�mente les interfaces COM en tant que classes imbriqu�es.


+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. handle des composants ATL
    Par yannfrance dans le forum D�buter
    R�ponses: 5
    Dernier message: 13/03/2009, 19h26
  2. cr�ation composant ATL
    Par JJkarim dans le forum Visual C++
    R�ponses: 5
    Dernier message: 05/03/2008, 16h58
  3. Probl�me dans un projet ATL COM avec DLL et MFC.
    Par jamais34 dans le forum Biblioth�ques
    R�ponses: 1
    Dernier message: 03/10/2007, 19h03
  4. [ATL-COM] Identifier l'origine d'une fuite m�moire
    Par Mat.M dans le forum Visual C++
    R�ponses: 5
    Dernier message: 20/06/2007, 19h47
  5. Les composants : ATL, DLL, COM, OCX, ...
    Par Pucpood dans le forum Windows
    R�ponses: 3
    Dernier message: 04/07/2003, 10h03

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