2010-08-29 5 views
1

J'ai créé une petite classe de zone de dessin et j'ai maintenant besoin d'une pixmap pour dessiner pendant le rappel d'événement d'exposition. Mais je ne peux obtenir aucun paramètre que j'ai essayé de compiler. Voici les parties pertinentes du code ...De quoi a besoin cet appel à gdk_get_pixmap?

La définition de classe ...

class set_display_drawing_area : public Gtk::DrawingArea 
{ 
    public: 
     set_display_drawing_area   (); 
     virtual ~set_display_drawing_area(); 
    protected: 
     virtual bool on_expose_event(GdkEventExpose* event); 
    private: 
     GdkPixmap    *pixmap_ptr; 
}; 

et exposer le rappel ...

bool set_display_drawing_area::on_expose_event(GdkEventExpose* event) 
{ 
    Glib::RefPtr<Gdk::Window> window = get_window(); 

    if (window) 
    { 
     Gtk::Allocation allocation = get_allocation(); 
     const int width = allocation.get_width(); 
     const int height = allocation.get_height(); 

     pixmap_ptr = gdk_pixmap_new (window, // <-- What is needed here? 
            width, 
            height, 
            -1); 

Répondre

2

Vous mixez gtkmm (C++) et gtk (C) code de style ici. gdk_pixmap_new est une fonction C qui n'a aucune idée sur les modèles et les classes (tels que Glib::RefPtr). Vous voudrez probablement utiliser gtkmm pour votre pixmap ainsi:

Glib::RefPtr<Gdk::Pixmap> pixmap; 

et

pixmap = Gdk::Pixmap::create(window, width, height); 
+0

Merci. C'est fait le tour. –

Questions connexes