Re: Fwd: pointer of functions - what a confusing things :-)
- From: thom_schu gmx de
- To: gtkmm-list gnome org
- Subject: Re: Fwd: pointer of functions - what a confusing things :-)
- Date: Thu, 9 Mar 2006 17:17:04 +0100 (MET)
> --- Ursprüngliche Nachricht ---
> Von: "Jonathon Jongsma" <jonathon jongsma gmail com>
> An: "gtkmm-list gnome org" <gtkmm-list gnome org>
> Betreff: Fwd: pointer of functions - what a confusing things :-)
> Datum: Thu, 9 Mar 2006 09:24:12 -0600
>
> sorry, forgot to copy this message to this list
>
> ---------- Forwarded message ----------
> From: Jonathon Jongsma <jonathon jongsma gmail com>
> Date: Mar 9, 2006 8:01 AM
> Subject: Re: pointer of functions - what a confusing things :-)
> To: "thom_schu gmx de" <thom_schu gmx de>
>
>
> On 3/9/06, thom_schu gmx de <thom_schu gmx de> wrote:
> > Hi,
> > since I was not able to get the Gtk::TreeView working under Windows
> (linker
> > error), I decided to write my own Wrapper for a Gtk+-TreeView-Object.
> > The Event-Handling of my new class MyTreeView should work just like the
> > Event-Handling under Gtkmm.
> > Now I do it like this.
>
> [snip]
>
> > The method on_row_activated is not a member-function, and this I think
> is
> > very dirty - but I didnt find a way to give the CALLBACK() a
> > member-function. Isnt there a way to do it like this :
> >
> > CALLBACK(&MyTreeView::on_row_activated) ?
> >
> > thanks in advance
> >
> > gizmo
>
> This is what the entire libsigc++ library used by gtkmm solves (i.e.
> sigc::mem_fun(...)). However, I would highly recommend that you try
> to get TreeView working instead of attempting to re-implement it.
> I've never used gtkmm on windows, but there certainly are people here
> that do. Perhaps if you posted detailed information about your
> problems using TreeView on windows somebody on the list could help you
> get it working, or maybe we could uncover a bug in gtkmm in the
> process.
>
> Jonner
> _______________________________________________
> gtkmm-list mailing list
> gtkmm-list gnome org
> http://mail.gnome.org/mailman/listinfo/gtkmm-list
>
I have a programm which uses Gtk::TreeView which works fine under Linux.
I tried to compile this programm under Windows and got the linker-error
variable 'vtable for Gtk::TreeViewColumn' can't be auto-imported. Please
read the documentation for ld's --enable-auto-import for details.
In the forum I found the hint I should link with the option
-Wl,--enable-runtime-pseudo-reloc
With this option (what ever it means) I could link, but my exe crashed (dont
know why and where), when I tried to execute. Then I started to substitute
the Gtk::TreeView with an GtkTreeView, for which I wrote my own wrapper -
and it worked so far.
But of course its not a clean solution and I would prefer to use the
Gtk::TreeView. I wrote a minimal example with a Gtk::TreeView (listed
below), got the same error "vtable for .....", then added the linker-option
"-W1,--enable ......", could link and surprise, the exe worked.
But then I wanted to go on with this example, just added the line
gtk_rc_parse("./gtkrc") in the main-method, and this was already enough that
my exe crashes again (a message window mentions the libglibmm). Im sure it
must have to do with the linker-option "-Wl,--enable .....", because my
programm, in which I substituted the Gtk::TreeView with an GtkTreeView I
link without that option and everything works fine.
Since Im not that expert when it comes to debug ...... Im lost at this
point.
Here my minimal example which worked.
#include <gtkmm.h>
class TreeViewTest : public Gtk::Window
{
public:
TreeViewTest();
virtual ~TreeViewTest();
protected:
Gtk::TreeView m_TreeView;
Gtk::ScrolledWindow m_ScrolledWindow;
Glib::RefPtr<Gtk::TreeStore> m_refTreeStore;
class ModelColumns : public Gtk::TreeModelColumnRecord
{
public:
Gtk::TreeModelColumn<std::string> name;
Gtk::TreeModelColumn<std::string> surname;
ModelColumns();
};
const ModelColumns m_columns;
};
TreeViewTest::ModelColumns::ModelColumns()
{
add(name);
add(surname);
}
TreeViewTest::TreeViewTest()
{
m_refTreeStore = Gtk::TreeStore::create(m_columns);
Gtk::TreeRow row = *(m_refTreeStore->append());
row[m_columns.name] = "Max";
row[m_columns.surname] = "Muster";
Gtk::TreeRow child_row = *(m_refTreeStore->append(row.children()));
child_row[m_columns.name] = "Moritz";
child_row[m_columns.surname] = "Muster";
m_TreeView.set_model(m_refTreeStore);
m_TreeView.append_column("Name", m_columns.name);
m_TreeView.append_column("Surname", m_columns.surname);
add(m_ScrolledWindow);
m_ScrolledWindow.add(m_TreeView);
m_ScrolledWindow.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
show_all();
}
TreeViewTest::~TreeViewTest()
{
}
int main(int argc, char **argv) {
Gtk::Main kit(argc, argv);
//gtk_rc_parse("./gtkrc");
Gtk::Window *win = new TreeViewTest();
kit.run(*win);
delete win;
return 0;
}
--
"Feel free" mit GMX FreeMail!
Monat für Monat 10 FreeSMS inklusive! http://www.gmx.net
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]