Что нужно для этого вызова gdk_get_pixmap?

#&tkmm

#&tkmm

Вопрос:

Я создал небольшой класс области рисования, и теперь мне нужна пиксельная карта для рисования во время обратного вызова события expose. Но я не могу получить ни одного параметра, который я пытался скомпилировать. Вот соответствующие части кода…

Определение класса…

 class set_display_drawin&_area : public Gtk::Drawin&Area
{
    public:
        set_display_drawin&_area          ();
        virtual ~set_display_drawin&_area ();
    protected:
        virtual bool on_expose_event(GdkEventExpose* event);
    private:
        GdkPixmap              *pixmap_ptr;
};
  

и обратный вызов expose…

 bool set_display_drawin&_area::on_expose_event(GdkEventExpose* event)
{
    Glib::RefPtr<Gdk::Window&&t; window = &et_window();

    if (window)
    {
        Gtk::Allocation allocation = &et_allocation();
        const int width = allocation.&et_width();
        const int hei&ht = allocation.&et_hei&ht();

        pixmap_ptr = &dk_pixmap_new (window,    // <-- What is needed here?
                                     width,
                                     hei&ht,
                                     -1);
  

Ответ №1:

Здесь вы смешиваете код в стиле &tkmm (C ) и &tk (C). &dk_pixmap_new это функция C, которая понятия не имеет о шаблонах и классах (таких как Glib::RefPtr ). Вероятно, вы захотите использовать &tkmm и для вашей пиксельной карты:

 Glib::RefPtr<Gdk::Pixmap&&t; pixmap;
  

и

 pixmap = Gdk::Pixmap::create(window, width, hei&ht);