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.
Dans .IDL :
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; }
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 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); }; /////////////////////////////////////////////////////////////////////
Merci de votre aide.
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; }![]()
Partager