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++Builder Discussion :

Type de classe non enregistrée à partir de son nom


Sujet :

C++Builder

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 190
    Par défaut Type de classe non enregistrée à partir de son nom
    Bonjour,

    Je souhaiterai écrire une fonction qui, à partir d'un handle d'un composant, me retourne un booleen me spécifiant si ce composant hérite d'un TEdit ou non.

    Voici ce que je fais:

    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
     
    #define CLASSNAMEMAXSIZE 256
     
    bool InheritsFromTEdit(HANDLE hWnd)
    {
      if (hWnd == NULL)
        return false;
     
      //Get class name from the window handle
      char CrtClassName[CLASSNAMEMAXSIZE];
     
      if (GetClassName(hWnd,CrtClassName,CLASSNAMEMAXSIZE) <= 0)
        return false;
     
      //Get the class-reference type
      TMetaClass *CrtClass = GetClass(CrtClassName);
     
      if (CrtClass == NULL)
        return false;
     
      return (Application->InheritsFrom(CrtClass,__classid(TEdit)));
    }
    Malheureusement, la fonction 'GetClass' ne fonctionne qu'avec des classes enregistrées.

    Connaissez-vous une fonction équivalente, fonctionnant aussi avec des classes non-enregistrées?

    Sinon, petite remarque, dans l'aide borland de la fonction 'GetClass' on peut lire:

    To obtain an unregistered class from a class name, use the __classid routine
    Ceci est faux, puisque __classid prend en paramettre un 'class type', et non pas un 'class name'.

    D'avance merci pour votre aide

    Cordialement

    Benjamin

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 190
    Par défaut
    Bonjour,

    Visiblement, une telle fonction n'existe pas.

    J'ai réussi à contourner le problème en m'y prenant différemment.

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Par défaut
    A mon avis, le plus simple est de faire un typage dynamique (renvoie NULL s'il n'arrive pas à faire la conversion):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    bool MyFunction(TObject* item) {
      TEdit *edit=dynamic_cast<TEdit*>(item);
      return (edit!=NULL);
    }

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 29/11/2006, 11h32
  2. EoleSysError classe non enregistrée
    Par Daniel Magron dans le forum Delphi
    Réponses: 10
    Dernier message: 19/11/2006, 11h36
  3. classe non enregistrée
    Par kilian dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/11/2006, 12h35
  4. Réponses: 7
    Dernier message: 10/11/2005, 10h09
  5. [ToutlookApplication] Classe non enregistrée
    Par nico33410 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 22/08/2005, 10h36

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