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 :

ClassView ActiveX


Sujet :

MFC

  1. #1
    Membre confirmé Avatar de tus01
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 191
    Par défaut ClassView ActiveX
    Bonjour j'ai créé un petit ActiveX dans Visual c++ 6 et j'y ai inséré un bouton CONFIG (j'ai enregistré le projet sous le nom de "active").
    Je lui ai attribué les propriétés suivantes:
    ID: IDC_conf
    Caption: CONFIG

    J"ai aussi mis comme ID pour ma fenêtre IDD_FENETRE_ACTIVE
    Ensuite je clique 2 fois sur mon bouton pour lui ajouter la fonction membre suivante: Onconf

    Puis je vais dans mon ClassWizard:
    Projet: active
    Class_name: CActiveCtrl (il y a aussi CActivePropPage)
    Objects_IDs: 2 possibilités: CActiveCtrl ou IDC_conf

    Je choisis CActiveCtrl et dans la case message à droite je cherche M_CREATE : je clique deux fois dessus pour aller sur la partie de code correspondante et je rajoute le bout de code fournit dans la FAQ de Farscape
    http://c.developpez.com/faq/vc/?page...tivexAddDialog
    Ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // CActiveCtrl message handlers
     
    int CActiveCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct) 
    {
    	if (COleControl::OnCreate(lpCreateStruct) == -1)
    		return -1;
     
    	// TODO: Add your specialized creation code here
    	m_Active.Create(IDD_MYDIALOG, this);	
    	return 0;
    }
    Pour finir je vais dans ClassView, puis CActiveCtrl puis je vais éditer ma fonction OnDraw, ce qui devient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // CActiveCtrl::OnDraw - Drawing function
     
    void CActiveCtrl::OnDraw(
    			CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
    {
    	// TODO: Replace the following code with your own drawing code.
    	pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
    	pdc->Ellipse(rcBounds);
    	if(m_Active.m_hWnd)
                 m_Active.MoveWindow(rcBounds, TRUE);
    }
    Je compile et j'obtiens 5 erreur:

    error C2065: 'm_Active' : undeclared identifier
    error C2228: left of '.m_hWnd' must have class/struct/union type
    error C2228: left of '.MoveWindow' must have class/struct/union type
    error C2228: left of '.Create' must have class/struct/union type
    error C2065: 'IDD_MYDIALOG' : undeclared identifier
    Je remarque donc que ma variable m_Active n'est pas déclarée.
    Je retourne dans le ClassWizard sous l'onglet Member Variables et 'obtiens ceci:

    Je peux seulement créer une classe et non une variable!! Aussi bien avec CActiveCtrl que CActivePropPage comme class_name !!

    Je suis donc coincé...

    Lors de la création de mon ActiveX ais-je omis de faire quelque chose ou pas?

    Comment puis je résoudre ce problème?

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    je ne suis pas bien sur d'avoir compris ton probleme.
    pour ajouter une classe utilise le bouton add class a droite sur ton image de ton post precedent.
    les variables non issues de controles comme une boite de dialogue ou les variable utilisateurs (m_Active) sont a declarées manuellement dans la classe appropriée .


  3. #3
    Membre confirmé Avatar de tus01
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 191
    Par défaut
    Non c'est que à ce stade là du programme, le debogger me trouve une erreur correpondante à une variable on déclarée. Je vais donc dans le ClassWizard pour faire une déclaration mais il veux d'abord que je créé une class et je ne comprends pas pourquoi?

    Moi j'ai simplement besoin de déclarer une variable pour pouvoir compiler mon activeX (bidon certes!) et voir comment l'activeX et le programme conteneur interagissent entre eux.

    Je sais pas si tu me suis... c'est un peu débile mais...

    Merci à toi!

  4. #4
    Membre confirmé Avatar de tus01
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 191
    Par défaut
    J'ai repris ton fichier TestOCX pour voir ce que tu as fais.
    J'enregistre le controle dans la base de regitre windows et lorsque je l'importe dans une application MFC, j'ai un carré blanc et non ta fenêtre avec avec ton edit box, check box, radio button, et bouton! Et lorsque j'affiche les propriétés de cette page blanche et que je clic sur Control, je vois ta fenêtre IDD_PROPPAGE_TESTOCX !

  5. #5
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    j'ai refais le test avec visual VC 2005 ,
    ok l'ocx ne s'affiche pas dans les ressources et c'est voulu ,mais il s'affiche bien lorsque le programme est executé.

  6. #6
    Membre confirmé Avatar de tus01
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 191
    Par défaut
    Oui c'est ce que je remarque aussi.

    Merci pour ton aide Farscape !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6] Comment Debugger une activeX ??
    Par Berns dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 19/05/2003, 17h34
  2. [ActiveX] Propriété "Picture" dans un contrôle util
    Par Ricou13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 14/12/2002, 15h59
  3. PB d'import avec les ActiveX sous BCB6
    Par dergen dans le forum C++Builder
    Réponses: 4
    Dernier message: 29/11/2002, 10h18
  4. [ActiveX] Visibilité d'une propriété
    Par paradise dans le forum Composants VCL
    Réponses: 2
    Dernier message: 14/11/2002, 18h33
  5. ActiveX : linker en statique ?
    Par tut dans le forum MFC
    Réponses: 8
    Dernier message: 07/11/2002, 10h24

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