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 :

Comment utiliser un exemple écrit en VC++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Par défaut Comment utiliser un exemple écrit en VC++
    Bonjour à tous,

    Je dispose du code de l'exemple d'un SDK pour exploiter une caméra sous Windows 7 écrit en VC++.

    Comment utiliser cet exemple pour le transférer en C++ Builder XE ?

    Voici le code du projet sous "Microsoft Visual C++ 2010 Express"
    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
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    /******************************************************************************
    *                                                                             *
    *   PROJECT : EOS Digital Software Development Kit EDSDK                      *
    *      NAME : Av.cpp                                                          *
    *                                                                             *
    *   Description: This is the Sample code to show the usage of EDSDK.          *
    *                                                                             *
    *                                                                             *
    *******************************************************************************
    *                                                                             *
    *   Written and developed by Camera Design Dept.53                            *
    *   Copyright Canon Inc. 2006-2008 All Rights Reserved                        *
    *                                                                             *
    *******************************************************************************/
     
    #include "stdafx.h"
    #include "CameraControl.h"
    #include "Av.h"
     
    #define WM_USER_PROPERTY_CHANGED		WM_APP+1
    #define WM_USER_PROPERTYDESC_CHANGED	WM_APP+2
    // CAv
     
    IMPLEMENT_DYNAMIC(CAv, CPropertyComboBox)
    CAv::CAv()
    {
    	// set up action command
    	setActionCommand("set_Av");
     
    	// Map of value and display name
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x00,"00"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x08,"1"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x0B,"1.1"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x0C,"1.2"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x0D,"1.2"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x10,"1.4"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x13,"1.6"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x14,"1.8"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x15,"1.8"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x18,"2"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x1B,"2.2"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x1C,"2.5"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x1D,"2.5"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x20,"2.8"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x23,"3.2"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x24,"3.5"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x25,"3.5"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x28,"4"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x2B,"4.5"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x2C,"4.5"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x2D,"5.0"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x30,"5.6"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x33,"6.3"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x34,"6.7"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x35,"7.1"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x38,"8"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x3B,"9"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x3C,"9.5"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x3D,"10"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x40,"11"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x43,"13"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x44,"13"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x45,"14"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x48,"16"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x4B,"18"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x4C,"19"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x4D,"20"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x50,"22"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x53,"25"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x54,"27"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x55,"29"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x58,"32"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x5B,"36"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x5C,"38"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x5D,"40"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x60,"45"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x63,"51"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x64,"54"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x65,"57"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x68,"64"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x6B,"72"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x6C,"76"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x6D,"80"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0x70,"91"));
    	_propertyTable.insert( std::pair<EdsUInt32, const char *>(0xffffffff,"unknown"));
    }
     
    CAv::~CAv()
    {
    }
     
     
    BEGIN_MESSAGE_MAP(CAv, CPropertyComboBox)
    	ON_MESSAGE(WM_USER_PROPERTY_CHANGED, OnPropertyChanged)
    	ON_MESSAGE(WM_USER_PROPERTYDESC_CHANGED, OnPropertyDescChanged)
    	ON_CONTROL_REFLECT(CBN_SELCHANGE, OnSelChange)
    END_MESSAGE_MAP()
     
     
     
    // CAv message handler
    void CAv::OnSelChange() 
    {
    	DWORD_PTR data = GetItemData(GetCurSel());
     
    	fireEvent(&data);
    }
     
    void CAv::update(Observable* from, CameraEvent *e)
    {
     
    	std::string event = e->getEvent();
     
    	//Update property
    	if(event == "PropertyChanged")
    	{
    		EdsInt32 propertyID = *static_cast<EdsInt32 *>(e->getArg());
     
    		if(propertyID == kEdsPropID_Av)
    		{
    			//The update processing can be executed from another thread. 
    			::PostMessage(this->m_hWnd, WM_USER_PROPERTY_CHANGED, NULL, NULL);
    		}
    	}
    Le n'y comprend rien !!!

    J'aimerai au moins le compiler avec "Microsoft Visual C++ 2010 Express " ne serait-ce que pour voir la Form qui s'affiche... Et par la suite le traduire en C++ Builder

    Nota : je n'ai besoin que de rechercher les appels aux fonctions des DLL fournies par le constructeur de la caméra. Je dispose en outre d'un exemple que j'ai écrit en 2005 sous Delphi qui utlise ces mêmes DLL mais sous Windows XP pour une ancienne version de la caméra, donc je connais le principe d'utilisation du SDK. Cela devrait pouvoir m'aider.

    Merci à tous.

    Quelqu'un peut-il m'aider ?

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Ce n'est pas simplement "du VC++", c'est du code utilisant Microsoft Foundation Classes (MFC), qui n'est pas fourni avec les versions Express de Visual Studio.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Par défaut Ok Quel compilateur faut-il utiliser ?
    Si c'est du code FMC quel compilateur faut-il utilisaer ?

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    C'est bien le compilo de Visual, mais il faut une version payante pour avoir les MFC avec.
    Ce n'est pas une question de compilateur, mais de bibliothèques.

    Oh, et il est impossible de "traduire" ce code vu qu'on n'a pas la déclaration de la classe. Et aussi, tu devrais faire déplacer çe thread vers le sous-forum MFC ou le sous-forum Borland: Cela n'a rien à faire dans "Débuter".
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Par défaut Ok et merci
    Si j'ai adressé ce message dans "C++ Builder Débuter", c'est que je travaille habituellement avec Delphi et que je dispose de C++ dans la version RAD XE avec lequel je débute.

    Par contre j'ai bien compris qu'il me faut acquérir VC++ en version payante si je souhaite compiler le projet. Je vais m'informer de son coût.

    Simplement comment avoir accès au sous-forum MFC, je ne le vois pas aparître dans les langages.

    A+

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/02/2009, 12h06
  2. Comment utiliser un cache ?
    Par TOM-Z dans le forum XMLRAD
    Réponses: 4
    Dernier message: 14/03/2003, 09h55
  3. comment utiliser actionscript ?
    Par webs dans le forum Flash
    Réponses: 3
    Dernier message: 09/02/2003, 23h11
  4. Comment utiliser OUT ?
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 3
    Dernier message: 20/07/2002, 09h35
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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