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

C++ Discussion :

concept orient� objet avec plusieurs classes, methodes eron�es sur l'instance propre


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Developer
    Inscrit en
    Juin 2004
    Messages
    194
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Developer

    Informations forums :
    Inscription : Juin 2004
    Messages : 194
    Par d�faut concept orient� objet avec plusieurs classes, methodes eron�es sur l'instance propre
    Bonjour,

    Ici je pense que le probleme concerne la Relation/Visibilit� des instances et methodes entre les differentes classes d'un projet MFC

    Il s'agit d'un projet VC++ auquel j'ai ajout� des fonctions d'un programme console c++ qui lui m�me utilise une librairie (classe device, device.h) autrement dit il s'agit d'un programme wrappeur (classe device_wrappeur, device_wrappeur.h) qui herite donc de la librairie
    Il s'agit donc d'implementer un programme wrappeur dans mon projet MFC (Classe MFCDEVICEDlg).

    la classe wrappeur a donc des m�thodes sur une couche sup�rieure � la classe device
    et herite donc de la classe device.


    Fichiers:

    -Le programe wrappeur poss�de 2 fichiers: device_wrappeur.h et device_wrappeur.cpp

    -La librairie device poss�de plusieurs fichiers .h dont le principal est: device.h (avec des fonctions inline )

    -Le porjet MFC contient donc principalement les fichiers : MFCDEVICEDlg.cpp et MFCDEVICEDlg.h



    Le concept en soi est donc d'utiliser soit directement la classe device avec ce methodes
    mais alors le projet devient plus lourd � r�aliser, donc j'ai d�cid� d'utiliser les appels du programme wrappeur et donc j'ai ajouter � mon projet MFC les 2 classes la m�re "device" et la fille "device_wrappeur".

    Jusqu'ici vous suivez, donc niveau conception je suppose que la casse device_wrappeur sera un aggregat � ma classe MFCDEVICEDlg et en m�me temps heritera de la classe device


    Pour l'implementation de mon projet MFCDEVICE cj'ai ajouter les include de la classe device_wrappeur et decice (m�me si la classe device_wrappeur continet deja #include device.h) et je cr�e simplement une instance de device_wrappeur en globale dans le fichier MFCDEVICEDlg.cpp, (dois je mettre device_wrappeur en tant qu'attribut � ma classe MFCDEVICE?)

    Sachant que device_wrappeur utilise ses propres m�thodes mais aussi celles de la classe m�re device. J'appele donc indirectement dans mon projet MFC, via l'instance de la classe device_wrappeur les methodes de la classe device.

    Voici le resum� du code:


    code device_wrappeur.cpp
    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
     
     
    #include "stdafx.h" //a mettre dans tous les fichiers .cpp si MFC 
    #ifndef DEVICE_WRAPPEUR_INCL
    #include "device_wrappeur.h"
    #endif
    #ifndef DEVICE_INCL
    #include "device.h"
    #endif
     
    ...
     
     
    bool device_wrappeur::SetupCapture(gxu16 propname, gxu16 propvalue) {
    	gxu16 props[] = {
    		propname, propvalue,
    		FXCAM_CAPTURE_PROPERTY_END
    	};
     
    	bool st = device::SetCaptureProperties(props); //classe mere
    	return st;
    }
     
     
    ....



    code device_wrappeur.h

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
     
    #ifndef DEVICE_WRAPPEUR_INCL
    #define DEVICE_WRAPPEUR_INCL
    //------------------------------------------------------------------------------
    #ifndef DEVICE_INCL
    #include "device.h"
    #endif
     
    #include "gxdevice.h"  
    #include <stdio.h>
     
     
     
    class device_wrappeur: public device {
    protected:
    	// ------- Error handling -------
    	char error_buffer[512];
    	char *logfile;
     
    ...
     
    //protected:
    public: // en public sinon pas d'acces possible
     
    #pragma pack(1)  
     
    	struct DEVICE_WRAPPEUR_SETTINGS {
    		gxu16	version;			/**< Version of the structure. */
    		gxu16	flags;				/**< Flags for preview program. */
    		gxu16	again;				/**< Analog gain. */
    		gxu16	dgain;				/**< Digital gain. */
    			} settings;
     
     
     
    public: 
     
    ...
     
     
    virtual bool SetupCapture(gxu16 propname, gxu16 propvalue); //
     
     
    ...

    code MFCDEVICEDlg.cpp:
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
     
     
    #include "stdafx.h"
     
    #include "MFCDEVICE.h"
    #include "MFCDEVICEDlg.h"
    #include "afxwin.h"
     
    #include "device.h" //dois je retirer car  dans device_wrappeur.h j'ai aussi ?
     
    #ifndef DEVICE_WRAPPEUR_INCL
    #include "device_wrappeur.h" // classe dérivée de device
    #endif	
    ..
     
    //GLOBALES
     
    device_wrappeur cp; //instance en globale
     
     
    device_wrappeur::DEVICE_WRAPPEUR_SETTINGS settings;  //prototype que je mets sinon:  "error C2065: 'settings' : undeclared identifier" plus bas
     
      enum device_wrappeur::DEVICE_WRAPPEUR_FLAGS DEVICE_WRAPPEUR_FLAG_FILTER;   //je mets sinon erreur:  "error C2065: 'DEVICE_WRAPPEUR_FLAG_FILTER' : undeclared identifier" plus bas
     
    ...
     
     
    //FONCTIONS
    void MFCDEVICEDlg::OnCheck1() 
    {
    	// TODO: Add your control notification handler code here
     
     
             //FONCTION AGIT CORRECTEMENT, C'EST UNE METHODE DE DEVICE  
            // DONC DE LA CLASSE MERE
             if(!cp.IsValid()) { 
             device_geterror(&ecode, ebuf, sizeof(ebuf));
             fprintf(stderr, "Open module failed: %i %s\n", ecode, ebuf);
    		//return 1;
    	}
     
    ...
     
    }
     
    void MFCDEVICEDlg::OnSelchangeCombo2()
    {
     
    ...
     
    //FONCTION QUI N'A PAS D'EFFET PQ? 
    bool need_reconnect = !cp.SetupCapture(DEVICE_CAPTURE_PROPERTY_DGAIN, cp.settings.dgain); 
    //settings etant une struct defini dans device_wrappeur.h 
     
    //DEVICE_CAPTURE_PROPERTY_DGAIN etant un enum de device definit dans device.h
     
     
    }
     
    ...


    Sur les methodes device_wrappeur et device , ce qui me surprend c'est que les appels sur les methodes de device fonctionne bien mais celles sur les methodes (de couche sup�rieur) de device_wrappeur restent neutre, c�d que la fonction (SetupCapture) ne fait rien alors que dans le programme en console (device_wrappeur.cpp) il agit correctement pq??

    Pourriez vous m'aider car je pense qu'il s'agit d'un probleme de conception ou d'instance nul sur un objet ?

    Merci

  2. #2
    Membre �prouv�
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    126
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 126
    Par d�faut
    Bonjour,

    Pourrais-tu envoyer un extrait de la classe device ?
    Je suppose que SetCaptureProperties est une de ses m�thodes ? Si celle-ci n'est pas une m�thode static, l'appel dans SetCaptureProperties est faux.
    Il devrait �tre tout simplement :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    bool st = this->SetCaptureProperties(props);
    Dans la mesure o� device_wrappeur h�rite de device, elle a acc�s � cette m�thode de la classe device.

    Cordialement,
    A.

  3. #3
    Membre confirm�
    Profil pro
    Developer
    Inscrit en
    Juin 2004
    Messages
    194
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Developer

    Informations forums :
    Inscription : Juin 2004
    Messages : 194
    Par d�faut
    Bonjour,

    Je me suis rendu compte d'une chose tr�s interessante c'est que la fonction SetupCapture de device_wrappeur peut fonctionner normalement si je lui passe un autre param�tre que celle avec laquelle je l'ai utilis�e jusqu'� present.

    Avec ces parametres d'appel ci la fonction agit bien :

    need_reconnect = !SetupCapture(DEVICE_CAPTURE_PROPERTY_BLACKLEVEL, settings.blacklevel); //OK !!!



    Je crois que c'est du � cause que la definition de la variable gxu16 properties[] qui se trouve dans les 2 fichiers device_wrappeur.cpp et MFCDEVICEDlg.cpp � la fois. Mais ils ne sont pas definis de la meme maniere (voir code) et c'est justement avec l'appel via un parametre qui ne se trouve pas dans la definition dans MFCDEVICEDlg.cpp que l'appel � SetupCapture focntionne bien , �trange ??


    J'ai recompl�t� mes codes avec des commentaires sur les endroits capitales //ICI



    code device_wrappeur.cpp
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
     
    #include "stdafx.h" //a mettre dans tous les fichiers .cpp si MFC 
    #ifndef DEVICE_WRAPPEUR_INCL
    #include "device_wrappeur.h"
    #endif
    #ifndef DEVICE_INCL
    #include "device.h"
    #endif
     
    ...
     
     
    bool device_wrappeur::SetupCapture(gxu16 propname, gxu16 propvalue) {
    	gxu16 props[] = {
    		propname, propvalue,
    		DEVICE_CAPTURE_PROPERTY_END
    	};
     
    	bool st = device::SetCaptureProperties(props); //classe mere
    	return st;
    }
     
     
    ....
    bool device_wrappeur::Reconnect(bool force_init) {
    	if(!device::IsValid()) {
    		return false;
    	}
     
    	// Setup capture properties
    	gxu16 properties[] = {  //DEFINIT EGALEMENT DANS MFCDEVICEDlg.cpp
    		DEVICE_CAPTURE_PROPERTY_LED, settings.flags & DEVICE_WRAPPEUR_FLAG_LED_ON ? 1 : 0,
     
    		DEVICE_CAPTURE_PROPERTY_WIN_X1, 0,
    		DEVICE_CAPTURE_PROPERTY_WIN_Y1, 0,
    		DEVICE_CAPTURE_PROPERTY_WIN_XS, capture_width,
    		DEVICE_CAPTURE_PROPERTY_WIN_YS, capture_height,
     
    		DEVICE_CAPTURE_PROPERTY_AGAIN,  settings.again,
    		DEVICE_CAPTURE_PROPERTY_DGAIN,  settings.dgain,
    		DEVICE_CAPTURE_PROPERTY_SHUTTER_HI, settings.shutterus >> 16,
    		DEVICE_CAPTURE_PROPERTY_SHUTTER_LO, settings.shutterus & 0xFFFF,
    		DEVICE_CAPTURE_PROPERTY_TIMEDIFFBF_HI, settings.timediffbf >> 16,
    		DEVICE_CAPTURE_PROPERTY_TIMEDIFFBF_LO, settings.timediffbf & 0xFFFF,
    		DEVICE_CAPTURE_PROPERTY_ADC_MODE, settings.flags & DEVICE_WRAPPEUR_FLAG_12_10 ? 1 : 0,
     
    		DEVICE_CAPTURE_PROPERTY_DIFFBRIGHT, settings.diffbright,
    		DEVICE_CAPTURE_PROPERTY_BLACKLEVEL, settings.blacklevel, //ICI L'APPEL AVEC CE PARAMETRE EST OK
     
    		DEVICE_CAPTURE_PROPERTY_COLOR, settings.flags & DEVICE_WRAPPEUR_FLAG_COLOR ? 1 : 0,
    		DEVICE_CAPTURE_PROPERTY_SCALE_X, 1,
    		DEVICE_CAPTURE_PROPERTY_SCALE_Y, 1,
     
    		DEVICE_CAPTURE_PROPERTY_END
    	};
     
    	if(!device::SetCaptureProperties(properties)) {
    		return false;
    	}



    code device_wrappeur.h

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
     
    #ifndef DEVICE_WRAPPEUR_INCL
    #define DEVICE_WRAPPEUR_INCL
    //------------------------------------------------------------------------------
    #ifndef DEVICE_INCL
    #include "device.h"
    #endif
     
    #include "gxdevice.h"  
    #include <stdio.h>
     
     
     
    class device_wrappeur: public device {
    protected:
    	// ------- Error handling -------
    	char error_buffer[512];
    	char *logfile;
     
    ...
     
    //protected:
    public: // en public sinon pas d'acces possible
     
    #pragma pack(1)  
     
    	struct DEVICE_WRAPPEUR_SETTINGS {
    		gxu16	version;			/**< Version of the structure. */
    		gxu16	flags;				/**< Flags for preview program. */
    		gxu16	again;				/**< Analog gain. */
    		gxu16	dgain;				/**< Digital gain. */
    			} settings;
     
     
     
    public: 
     
    ...
     
     
    virtual bool SetupCapture(gxu16 propname, gxu16 propvalue); //
     
     
    ...

    code MFCDEVICEDlg.cpp:
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
     
     
    #include "stdafx.h"
     
    #include "MFCDEVICE.h"
    #include "MFCDEVICEDlg.h"
    #include "afxwin.h"
     
    #include "device.h" //dois je retirer car  dans device_wrappeur.h j'ai aussi ?
     
    #ifndef DEVICE_WRAPPEUR_INCL
    #include "device_wrappeur.h" // classe dérivée de device
    #endif	
    ..
     
    //GLOBALES
     
    device_wrappeur cp; //instance en globale
     
     
    device_wrappeur::DEVICE_WRAPPEUR_SETTINGS settings;  //prototype que je mets sinon:  "error C2065: 'settings' : undeclared identifier" plus bas
     
      enum device_wrappeur::DEVICE_WRAPPEUR_FLAGS DEVICE_WRAPPEUR_FLAG_FILTER;   //je mets sinon erreur:  "error C2065: 'DEVICE_WRAPPEUR_FLAG_FILTER' : undeclared identifier" plus bas
     
    ...
     
     
    //FONCTIONS
    void MFCDEVICEDlg::OnCheck1() 
    {
    	// TODO: Add your control notification handler code here
     
     
             //FONCTION AGIT CORRECTEMENT, C'EST UNE METHODE DE DEVICE  
            // DONC DE LA CLASSE MERE
             if(!cp.IsValid()) { 
             device_geterror(&ecode, ebuf, sizeof(ebuf));
             fprintf(stderr, "Open module failed: %i %s\n", ecode, ebuf);
    		//return 1;
    	}
     
    ...
     
    }
     
    void MFCDEVICEDlg::OnSelchangeCombo2()
    {
     
    ...
     
    //FONCTION QUI N'A PAS D'EFFET PQ? 
    bool need_reconnect = !cp.SetupCapture(DEVICE_CAPTURE_PROPERTY_DGAIN, cp.settings.dgain); 
    //settings etant une struct defini dans device_wrappeur.h 
     
    //DEVICE_CAPTURE_PROPERTY_DGAIN etant un enum de device definit dans device.h
     
     
    }
     
    ...
     
    bool MFCDEVICEDlg::GetCapture()  //les appels dans cette fonction marche bien 
                                     // car on appelle directement les methodes 
    								 // de device
    {
     
    	// Query information
    	gxu16 came;
    	if(!cp.GetInfo(NULL, NULL, NULL, &cam)) {   // fonctionne bien GetInfo est une methode de device
    		gx_geterror(&ecode, ebuf, sizeof(ebuf));
    		MessageBox("GetInfo() failed..","Capture message");
    		return 1;
    	}
     
     
    	// Setup capture properties
    	gxu16 properties[] = {  //ICI: PARAMETRES EN CAUSE !!!!!
    		DEVICE_CAPTURE_PROPERTY_WIN_X1, 0,
    		DEVICE_CAPTURE_PROPERTY_WIN_Y1, 0,
    		DEVICE_CAPTURE_PROPERTY_WIN_XS, img_width,
    		DEVICE_CAPTURE_PROPERTY_WIN_YS, img_height,
     
    		DEVICE_CAPTURE_PROPERTY_AGAIN,  100,
    		DEVICE_CAPTURE_PROPERTY_DGAIN,  100,
    		DEVICE_CAPTURE_PROPERTY_SHUTTER_HI, 0,
    		DEVICE_CAPTURE_PROPERTY_SHUTTER_LO, 10000,
    		DEVICE_CAPTURE_PROPERTY_TIMEDIFFBF_HI, device_fps_to_timediffbf(60) >> 16,
    		DEVICE_CAPTURE_PROPERTY_TIMEDIFFBF_LO, device_fps_to_timediffbf(60) & 0xFFFF,
    		DEVICE_CAPTURE_PROPERTY_ADC_MODE, 0,
     
    		DEVICE_CAPTURE_PROPERTY_COLOR, 0,
    		DEVICE_CAPTURE_PROPERTY_SCALE_X, 1,
    		DEVICE_CAPTURE_PROPERTY_SCALE_Y, 1,
     
    		DEVICE_CAPTURE_PROPERTY_END
    	};
     
    	if(!cp.SetCaptureProperties(properties)) { //fonctionne pas si j'enleve la definition
    	                                           //gxu16 properties[] juste avant
    		gx_geterror(&ecode, ebuf, sizeof(ebuf));
    		MessageBox("SetCaptureProperties() failed.","Capture message");
    		return 1;
    	}
    	...
     
    }

    Donc Apperement seule la definition dans device_wrappeur est suffisante, donc j'ai decid� d'enlever la definition de gxu16 properties[] dans la fonction bool MFCDEVICEDlg::GetCapture() du fichier MFCDEVICEDlg.cpp mais alors la ligne plus bas, dans la fonction bool CFXCMAd_previewDlg::GetCaptureImage() genere une erreur " error C2065: 'properties' : undeclared identifier" :

    if(!cp.SetCaptureProperties(properties)) //erreur :" properties is undeclared "


    Et voici la definirion de SetCaptureProperties, elle se trouve dans le fichier device.h :

    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
     
     
     
    ...
     
     
    inline bool SetCaptureProperties(const gxu16 *properties) throw(gxError) {
     
    bool st = device_setcaptureproperties(*this, properties) ? true : false;
    gxcondthrow(!st);
    return st;
     
    }
     
    ...
    D'ou vient le probleme ?

    Comment pourrais je definir une fois et au bon endroit la variable gxu16 properties [] ?

    Merci Agamitsudo

  4. #4
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    D�tails du profil
    Informations personnelles :
    �ge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par d�faut
    C'est normal que tu aies une erreur, si la variable n'existe pas.

    Si tu veux que la variable fasse partie de ta classe et soit utilisable � n'importe quel moment, il faut la d�clarer dans la classe.

  5. #5
    Membre confirm�
    Profil pro
    Developer
    Inscrit en
    Juin 2004
    Messages
    194
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Developer

    Informations forums :
    Inscription : Juin 2004
    Messages : 194
    Par d�faut
    Ok,

    1)

    C'est exact mais il est defini dans une methode de la classe device_wrappeur

    device_wrappeur.cpp :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    ...
    
    bool device_wrappeur::Reconnect(bool force_init) 
    {
    	// Check module
    	if(!device::IsValid()) {
    		SetGXError("Create camera class failed (possible the  
        fxcam module doesn't exists)");
    		return false;
    	}
    
    ...
    
    	// Setup capture properties
    	gxu16 properties[] = {
    		DEVICE_CAPTURE_PROPERTY_LED, settings.flags & DEVICE_WRAPPEUR_FLAG_LED_ON ? 1 : 0,
    		
    		DEVICE_CAPTURE_PROPERTY_WIN_X1, 0,
    		DEVICE_CAPTURE_PROPERTY_WIN_Y1, 0,
    		DEVICE_CAPTURE_PROPERTY_WIN_XS, capture_width,
    		DEVICE_CAPTURE_PROPERTY_WIN_YS, capture_height,
    		
    		DEVICE_CAPTURE_PROPERTY_AGAIN,  settings.again,
    		DEVICE_CAPTURE_PROPERTY_DGAIN,  settings.dgain,
    		DEVICE_CAPTURE_PROPERTY_SHUTTER_HI, settings.shutterus >> 16,
    		DEVICE_CAPTURE_PROPERTY_SHUTTER_LO, settings.shutterus & 0xFFFF,
    		DEVICE_CAPTURE_PROPERTY_TIMEDIFFBF_HI, settings.timediffbf >> 16,
    		DEVICE_CAPTURE_PROPERTY_TIMEDIFFBF_LO, settings.timediffbf & 0xFFFF,
    		DEVICE_CAPTURE_PROPERTY_ADC_MODE, settings.flags & DEVICE_WRAPPEUR_FLAG_12_10 ? 1 : 0,
    
    		DEVICE_CAPTURE_PROPERTY_DIFFBRIGHT, settings.diffbright,
    		DEVICE_CAPTURE_PROPERTY_BLACKLEVEL, settings.blacklevel,
    		
    		DEVICE_CAPTURE_PROPERTY_COLOR, settings.flags & DEVICE_WRAPPEUR_FLAG_COLOR ? 1 : 0,
    		DEVICE_CAPTURE_PROPERTY_SCALE_X, 1,
    		DEVICE_CAPTURE_PROPERTY_SCALE_Y, 1,
    		
    		DEVICE_CAPTURE_PROPERTY_END
    	};
    	
    ...
    
    }

    Et donc j'ai mis en en haut du fichier MFCDEVICEDlg.cpp
    la declaration : "extern gxu16 properties[];"

    Ce qui a compil� correctement mais a un erreur de link :

    error LNK2001: unresolved external symbol "unsigned short * properties" (?properties@@3PAGA)

    Comme la classe device_wrappeur est un aggregation de la classe MFCDEVICEDlg , dans quel classe et fichiers dois je definir et declarer cette variable pour pouvoir l'utiliser de partout ?



    2)

    Mais ce qui m'etonne toujours c'est pourquoi quand j'appelle la fonction avec ds parametres differents fonctionne bien ou pas selon le parametre?

    need_reconnect = !cp.SetupCapture(DEVICE_CAPTURE_PROPERTY_BLACKLEVEL, settings.blacklevel); //OK !!!


    need_reconnect = !cp.SetupCapture(DEVICE_CAPTURE_PROPERTY_DGAIN, settings.dgain); //NOK !!!

    avec le parametre blacklevel ca fonctionne et pas avec dgain, pourquoi ?


    Merci

Discussions similaires

  1. conception Objet avec plusieurs table MYSQL
    Par Polymorph dans le forum Langage
    R�ponses: 7
    Dernier message: 06/02/2009, 09h28
  2. R�ponses: 2
    Dernier message: 15/01/2007, 13h18
  3. Conception oriente objet
    Par black.out dans le forum OpenGL
    R�ponses: 4
    Dernier message: 30/12/2006, 00h15
  4. conception orient�e objet
    Par yvon_huynh dans le forum Langage
    R�ponses: 1
    Dernier message: 07/08/2006, 13h09
  5. [Conception] Listes chainées avec plusieurs champs
    Par Nasky dans le forum G�n�ral Java
    R�ponses: 6
    Dernier message: 11/03/2006, 23h52

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