Boutique Cinema 4D
Affichage des résultats 1 à 6 sur 6

Discussion: Ajouter un bouton bitmap en C++

  1. #1
    Gourou Avatar de César Vonc
    Date d'inscription
    avril 2006
    C4D version
    Autre
    OS
    Windows 10
    Messages
    2 483

    Ajouter un bouton bitmap en C++

    Salut,


    Je me remets un peu au C++ pour les besoins d'un module et je bloque sur la création d'un bouton avec une image bitmap dans ma boîte de dialogue.


    Après quelques recherches sur la toile, je suis tombé sur plusieurs méthodes, mais je n'arrive pas à les faire marcher.

    D'abord, « AttachImage », trouvé ici : http://www.plugincafe.com/forum_brow...messageID=1545
    Mais qui ne semble plus exister, peut-être est-ce une méthode trop vieille ?


    Et puis « AddCustomGui », sauf que là aussi, je ne comprends pas comment lui ajouter un bitmap, elle renvoie du vide et non pas un BitmapButtonCustomGui.

    Dans CreateLayout :
    Code PHP:
    this->AddCustomGui(1200CUSTOMGUI_BITMAPBUTTON"Bitmap"BFH_CENTER6464BaseContainer()); 


    Ne pourrait-on pas également faire ça dans le fichier .res ?

    Est-il possible aussi d'afficher à la fois un texte et un bitmap sur un bouton ?

  2. #2
    Gourou Avatar de César Vonc
    Date d'inscription
    avril 2006
    C4D version
    Autre
    OS
    Windows 10
    Messages
    2 483
    Ah je crois que j'ai trouvé un vieux message d'xs_yann à ce sujet :
    http://frenchcinema4d.fr/archive/index.php/t-72155.html

    Qui met (BitmapButtonCustomGui*) avant AddCustomGui, bon j'imagine que ça change le type même si j'en suis pas certain.


    Du coup ça marche :

    Code PHP:
    BaseContainer bc BaseContainer();
    bc.SetBool(BITMAPBUTTON_BUTTONTRUE);
    BitmapButtonCustomGui *bb = (BitmapButtonCustomGui*)AddCustomGui(1200CUSTOMGUI_BITMAPBUTTON"Bitmap"BFH_CENTER6464bc);
    bb->SetImage(GeGetPluginPath() + Filename("res") + Filename("icone.png")); 
    J'ai également vu que le BaseContainer pouvait ajouter quelques propriétés au bouton : BITMAPBUTTON_BUTTON permet de le rendre cliquable.


    Ceci dit, mes deux autres questions sont toujours d'actualité.
    Dernière modification par César Vonc ; 29/03/2014 à 14h48.

  3. #3
    Pilier Avatar de xs_yann
    Date d'inscription
    février 2005
    C4D version
    R19 Studio
    OS
    Mac OS X 10.13
    Messages
    1 990
    Salut César,

    La méthode AddCustomGui() ne retourne pas rien, elle retourne un "void*", ce qui représente un pointeur générique. En gros ça te retourne un pointeur qui pointe bien sur une adresse mémoire contenant quelque chose, mais dont la fonction ne connait pas le type. C'est différent de "void" qui lui représente "rien".
    Dans ce cas là, cela permet à la fonction AddCustomGui de pouvoir renvoyer des BitmapButtonCustomGui mais aussi des GradientCustomGui, FilenameCustomGui, etc.
    C'est à toi de faire le cast pour pouvoir manipuler correctement les données renvoyées :

    Code PHP:
    BitmapButtonCustomGui *bb static_cast<BitmapButtonCustomGui*>(AddCustomGui(...)); 
    Pour le fichier .res, je pense que tu peux, olight.res et ocamera.res le font par exemple.

    Code PHP:
    BITMAPBUTTON MON_PARAM { } 
    Pour le texte et le bitmap en même temps je ne sais pas, désolé.

    Bon courage.

  4. #4
    Gourou Avatar de César Vonc
    Date d'inscription
    avril 2006
    C4D version
    Autre
    OS
    Windows 10
    Messages
    2 483
    Aah d'accord, merci pour les détails !

    C'est plus propre d'utiliser static_cast<BitmapButtonCustomGui*> ou ça ne change rien ? Je n'ai pas d'alerte particulière quand je compile avec l'un ou l'autre.

  5. #5
    Pilier Avatar de xs_yann
    Date d'inscription
    février 2005
    C4D version
    R19 Studio
    OS
    Mac OS X 10.13
    Messages
    1 990
    Moi je trouve ça plus propre, après chacun son avis.

    Un post qui résume bien :

    C++ style casts are checked by the compiler. C style casts aren't and can fail at runtime

    also, c++ style casts can be searched for easily, whereas it's really hard to search for c style casts

    Another big benefit is that the 4 different C++ style casts express the intent of the programmer more clearly.

    When writing C++ I'd pretty much always use the C++ ones over the the C style.
    http://stackoverflow.com/questions/1...-style-casting

    Un post qui explique bien :

    http://stackoverflow.com/questions/2...s-dynamic-cast

  6. #6
    Gourou Avatar de César Vonc
    Date d'inscription
    avril 2006
    C4D version
    Autre
    OS
    Windows 10
    Messages
    2 483
    Ça roule !

Discussions similaires

  1. [Résolu] Bouton sol invisible
    Par FREDMIX dans le forum Nouveaux membres
    Réponses: 6
    Dernier message: 12/04/2012, 13h30
  2. Plus de bouton réponse
    Par Bohémond dans le forum Le site
    Réponses: 6
    Dernier message: 02/08/2009, 23h32
  3. Vectorisation de bitmap
    Par alexandreh dans le forum Modélisation
    Réponses: 3
    Dernier message: 23/11/2008, 05h33
  4. absence du bouton fourrure
    Par DomS dans le forum Hair
    Réponses: 3
    Dernier message: 30/03/2007, 15h20
  5. problème bouton en coffee
    Par parksto dans le forum Xpresso
    Réponses: 4
    Dernier message: 13/11/2002, 10h31

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  
Mediaworks - Logiciels 3D | Design Internet - Creation site internet