2010-08-29 29 views
1

我已经创建了一个小的绘图区类,现在需要在揭示事件回调期间绘制一个像素图。但是我无法获得任何我试图编译的参数。下面是代码的相关部分...这次调用gdk_get_pixmap需要什么?

类定义...

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; 
}; 

和暴露回调...

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); 

回答

2

你混合gtkmm的(C++)和gtk(C)风格的代码。 gdk_pixmap_new是一个C函数,它不知道模板和类(例如Glib::RefPtr)。您可能需要使用gtkmm的为您像素映射,以及:

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

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

谢谢。这是做的伎俩。 – 2010-08-29 10:18:04