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 :

Remplacer InvokeHelper() pour une application NON MFC


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    23
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 23
    Par d�faut Remplacer InvokeHelper() pour une application NON MFC
    Bonjour � tous,

    J'ai actuellement un programme fonctionnel utilisant un activeX d�finis.

    J'ai un fichier MaClasse.h de la forme :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    class MaClasse : public CWnd{
    protected:
    	DECLARE_DYNCREATE(CCamimgctrl1)
    public:
    	CLSID const& GetClsid(){// {CB91D304-704C-44bd-9554-2DC47156A198}
    		static CLSID const clsid =
    			{ 0xcb91d304, 0x704c, 0x44bd, { 0x95, 0x54, 0x2d, 0xc4, 0x71, 0x56, 0xa1, 0x98 } };
    		return clsid;
    	}
    	virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle,const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL){ 
    		return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); 
    	}
     
        BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, 
    				UINT nID, CFile* pPersist = NULL, BOOL bStorage = FALSE,BSTR bstrLicKey = NULL){ 
    		return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,pPersist, bStorage, bstrLicKey); 
    	}
     
    	CString get_ImageFileURL(){
    		CString result;
    		InvokeHelper(0x1, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
    		return result;
    	}
    	void put_ImageFileURL(LPCTSTR newValue){
    		static BYTE parms[] = VTS_BSTR ;
    		InvokeHelper(0x1, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
    	}
    et son cpp associ� :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    #include "stdafx.h"
    #include "MaClasse.h"
     
    IMPLEMENT_DYNCREATE(maClasse, CWnd)
    Maintenant, j'essaie d'utiliser les m�thodes de cette classe pour un filtre directShow :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    MaClasse monObjet;
    monObjet.put_ImageFileURL(_T("monImage.cgi"))
    Cela compile mais l'appel � la m�thode plante laborieusement � l'ex�cution.

    Il existe des apparemment des astuces pour arriver � utiliser ce genre de m�thode dans des applications non MFC mais je ne trouve pour l'instant rien.

    J'en ai trouv� une pour une utilisation avec Qt -> http://www.qtcentre.org/archive/index.php/t-231.html qui fait appel � la m�thode dynamicCall(), ou directement � la m�thode Invoke() mais ce n'est pas applicable � mon projet.

    Connaissez-vous donc des �quivalents � ces fa�ons de faire ?

  2. #2
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 505
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 505
    Par d�faut
    Votre code pr�sente bien d'autres artefacts que "InvokeHelper".
    Ces artefacts n'impliquent pas une d�pendance aux MFC mais c'est pas s�r.

    Si vous n'avez pas de code plus "open-libre" et que seul "InvokeHelper" cr�e une d�pendance au MFC, n'oubliez pas que vous avez les sources des MFC.

    Regardez l'impl�mentation de cette m�thode, avec un peu de chance, un simple copier-coller de ce code dans votre projet ferait l'affaire.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    23
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 23
    Par d�faut
    Qu'appelez-vous code plus "open-libre" ?


    Au passage, j'ai plus de pr�cision sur l'erreur qui survient : un assert est lanc� � la premi�re instruction de InvokeHelper car l'attribut m_pCtrlSite est NULL ! Cet attribut appartient � la classe ColeControl sp�cifique aux MFCs : c'est de l� d'o� vient ma d�pendance. Cela implique que le simple copier/coller ne fonctionne pas

  4. #4
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 505
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 505
    Par d�faut
    Qu'appelez-vous code plus "open-libre" ?
    Du code non li� � une biblioth�que tierce, comme les MFC.

    Moi, g�n�ralement, pour utiliser des composants COM(ActiveX) dans du code C++, j'utilise #import.

    http://msdn.microsoft.com/en-us/libr...b6(VS.71).aspx

Discussions similaires

  1. [EJB3] Conseils pour une application non web
    Par bobbk12000 dans le forum Java EE
    R�ponses: 1
    Dernier message: 15/05/2009, 11h26
  2. Quels sont les meilleurs langages pour créer une application non-web (en local) ?
    Par Skeud007 dans le forum Langages de programmation
    R�ponses: 11
    Dernier message: 31/08/2007, 16h33
  3. R�ponses: 2
    Dernier message: 12/12/2006, 17h42
  4. R�ponses: 8
    Dernier message: 22/05/2006, 09h25
  5. [MFC]Bouton "?" pour une application boite dialogu
    Par fleur_de_rose dans le forum MFC
    R�ponses: 2
    Dernier message: 23/03/2006, 08h44

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