Re: Glib-GObject-CRITICAL



The description of Gtk::Main says "Every application must have one of these objects. It may not be global and must be the first gtkmm object created." In your program the MessageDialog is created before the Main object. Try this:

int main (int argc, char *argv[]) {
 Gtk::Main app(argc, argv); // app before uiex
 ns::uiexception uiex;
 shared_ptr< Gtk::Window > aWindow(new Gtk::Window);
        Gtk::Main::run( *aWindow );
 return 0;
}

2013-02-16 12:39, Doesnt Stop skrev:

I have a few questions regarding this small app.
One, Gtk::Window is a class and it can but loaded in the heap, just like I did in the main() method. The same rule applies to Gtk::MessageDialog, since it is a class that derives from Gtk::Window; I have loaded a Gtk::MessageDialog's object in the heap. Please correct me if I am wrong.

Equally important, the program compiles, but it displays a black window wih a message saying something like:
(myApp.exe:1040): Glib-GObject-CRITICAL ** gtype.c:2710: You forgot to call g_type_init()
This message is repeated many times in the same black window.
I am not using precompile header in my VSE10 and I am using gtkmm-win32-devel-2.22.0-2 package in a Win7 machine.


OK, now that I have stated the above. I would like to know:
In the example in http://git.gnome.org/browse/gtkmm-documentation/tree/examples/book/dialogs/messagedialog/examplewindow.cc.
The Gtk::MessageDialog object declaration only has two parameters, that exaple is not an options for me since I'm not deriving from any Gtk class, I am deriving from std::exception. Is it possible to declare a Gtk::MessageDialog object in a class that is not derived from a Gtk class? and can this Gtk::MessageDialog be decalered and instantiated as a pointer?

 

TIA

 

#define WIN32_LEAN_AND_MEAN
#include <stdio.h>
#include <cstddef>
#include <xstddef>
#include <iostream>
#include <stdlib.h>
#include <cstdlib>
#include <regex>
#include <memory>
#include <gtkmm.h>
#include <windows.h>
#include <exception>

#include "uiexception.hpp"
using namespace std;

int main( int argc, char **argv );
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine,int nCmdShow){
return main (__argc, __argv);
}

int main (int argc, char *argv[]) {
 ns::uiexception uiex;
 Gtk::Main app(argc, argv);
 shared_ptr< Gtk::Window > aWindow(new Gtk::Window);
        Gtk::Main::run( *aWindow );
 return 0;
}

file.hpp
~~~~~~~~
#ifndef ns_UIEXCEPTION_HPP
#define ns_UIEXCEPTION_HPP

#include <gtkmm.h>
#include <glibmm/ustring.h>


namespace ns {
 class uiexception : public std::exception{
 public:
  uiexception();
  virtual ~uiexception()throw(){}
 private:
  Glib::ustring version;
  Gtk::MessageDialog* dialog;
  void Init();
 };
}

#endif
file.cpp
~~~~~~~~
#ifndef ns_UIEXCEPTION_HPP
#include "uiexception.hpp"
#endif
void ns::uiexception::Init(){
 version = "0.0.5";
 std::shared_ptr<Gtk::MessageDialog>
  dialog( new Gtk::MessageDialog(
        " message",            Message
        false,                  Markup
        Gtk::MESSAGE_WARNING,  MessageType
        Gtk::BUTTONS_OK,       Buttons
        false));                modal
}
ns::uiexception::uiexception(){
 Init();
}

#ifndef JME_UIEXCEPTION_HPP
#include "uiexception.hpp"
#endif
void jme::uiexception::Init(){
 version = "0.0.5";

 std::shared_ptr<Gtk::MessageDialog>
  dialog( new Gtk::MessageDialog(
        " message",            //Message
        false,                 // Markup
        Gtk::MESSAGE_WARNING,  //MessageType
        Gtk::BUTTONS_OK,       //Buttons
        false));               // modal
    
}
jme::uiexception::uiexception(){
 Init(); //coment or uncoment this function call to test both MessageDialogs
  Gtk::MessageDialog Dialog(
  " message",           // Message
  false,                //  Markup
  Gtk::MESSAGE_WARNING, // MessageType
  Gtk::BUTTONS_OK,      // Buttons
  false);               // modal
}





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]