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