[GTKMM] HWND von einem Gtk Widget Problem



  • Hallo,

    ich versuche ein HWND von einem Gtk Widget zu bekommen, leider scheint es so zu sein, dass egal von welchem widget ich das Handle holle, kriege ich immer das Handle von dem Hauptfenster.

    Z.b.

    Gtk::Window *mainWindow=NULL;
    Gtk::Frame *renderFrame=NULL;
    Gtk::DrawingArea *drawingArea=NULL;
    
    Dann lade ich die Widgets aus einem glade file und holle mir die Handles:
    
    HWND hwndMainWindow = static_cast<HWND>(GDK_WINDOW_HWND(mainWindow->get_window()->gobj()));
    HWND hwndRenderFrame = static_cast<HWND>(GDK_WINDOW_HWND(renderFrame->get_window()->gobj()));
    HWND hwndDrawingArea = static_cast<HWND>(GDK_WINDOW_HWND(drawingArea->get_window()->gobj()));
    
    printf("hwndMainWindow : %d\n",hwndMainWindow);
    printf("hwndRenderFrame : %d\n",hwndRenderFrame);
    printf("hwndDrawingArea : %d\n",hwndDrawingArea );
    

    Alle drei printf funktionen printen den gleichen Wert.
    Wie kann ich ein Handle von einem speziellen Widget hollen?
    (Will in das Fenster mit eine externe 3d engine rendern, aber z.z. wird in das gesamte Fenster, wegen dem Problem, gerendert.)

    Vielen Dank



  • Ist doch kein Wunder, da GTK keine nativen Widgets nutzt. Alle Widgets werden selbst gezeichnet, in das Hauptfenster.



  • Ok danke,

    wie sieht es dann mit multi document interface Unterstützung aus?
    Also Fenster im Fenster darstellen, so hätte ich ein HWND pro Fenster, und könnte die einzelne Fenstern gut verwalten. Geht das mit GTK/GTKmm?

    Ich brauche nur eine Möglichkeitkeit geziehlt in bestimmte Bereiche/Widgets zu rendern ohne dabei extra ein neues Fenster anzuzeigen.

    Für rendering verwende ich Direct3D, hab schon probiert Viewport Größe einzuschränken, um andere Fensterteile nicht zu überzeichnen, war aber erfolglos.

    Ein neues Widget zu erstellen wäre wahrscheinlich auch nicht so gut, da es wiederum bestimmt kein neues HWND erstellt wird.

    Vielen Dank



  • Ok, das Problem ist gelöst.

    Ich verwendet jetzt wxWidgets, das greift auf die native widgets zu, so dass ich ein eindeutiges HHWND pro widget habe. Im Test funktionierte das auch.

    Mit QT müsste das auch gehen, aber die Visual C++ Express integration ist schwerfällig.

    Wenn jemand einen guten Formdesigner ausser dem FormBuilder kennt, der Resourcefiles erstellen kann und standalone einsetzbar ist, wäre das auch interessant.


Log in to reply