Hi, I don't really know much about wxWidgets, but I'm guessing the problem is from this call:
rv = baseWindow->InitWindow(frame, 0, 0, 0, 300, 400); InitWindow should get a native pointer/handler to the parent window. For ubuntu I believe this should be a Gtk window handle. Maybe there is a way to get that from the wxWidgets frame? Hope this helps, -Pelle On Jul 4, 4:55 am, "amith raravi" <[EMAIL PROTECTED]> wrote: > Hi everyone. > > I have been trying to write a sample code for embedding mozilla in > wxWidgets. > I dont seem to be able to embed Mozilla even though i follow all the steps > given > inhttp://developer.mozilla.org/en/docs/XPCOM_Glueandhttp://developer.mozilla.org/en/docs/GRE > I am running Ubuntu 8.04. > > Code: > > #include "wx/wxprec.h" > > #ifdef __BORLANDC__ > #pragma hdrstop > #endif > > #ifndef WX_PRECOMP > #include "wx/wx.h" > #endif > > #define XPCOM_GLUE > > #include "xpcom-config.h" > #include "nsXPCOMGlue.h" > #include "nsDebug.h" > #include "nsCOMPtr.h" > #include "widget/nsIBaseWindow.h" > #include "nsILocalFile.h" > #include "nsIWebBrowser.h" > #include "docshell/nsIWebNavigation.h" > #include "nsEmbedCID.h" > #include "nsEmbedString.h" > #include "xulapp/nsXULAppAPI.h" > #include "nsComponentManagerUtils.h" > > #define wxCSTR wxString::FromAscii > > XRE_InitEmbeddingType XRE_InitEmbedding; > XRE_TermEmbeddingType XRE_TermEmbedding; > > class MyApp : public wxApp > { > public: > virtual bool OnInit(); > > }; > > class MyFrame : public wxFrame > { > public: > MyFrame(const wxString& title); > > void OnQuit(wxCommandEvent& event); > void OnAbout(wxCommandEvent& event); > > private: > DECLARE_EVENT_TABLE() > > }; > > enum > { > Minimal_Quit = wxID_EXIT, > > Minimal_About = wxID_ABOUT > > }; > > BEGIN_EVENT_TABLE(MyFrame, wxFrame) > EVT_MENU(Minimal_Quit, MyFrame::OnQuit) > EVT_MENU(Minimal_About, MyFrame::OnAbout) > END_EVENT_TABLE() > > IMPLEMENT_APP(MyApp) > > bool MyApp::OnInit() > { > if ( !wxApp::OnInit() ) > return false; > MyFrame *frame = new MyFrame(wxCSTR("Minimal wxWidgets App")); > SetTopWindow(frame); > frame->Show(true); > > nsCOMPtr<nsIBaseWindow> baseWindow; > nsCOMPtr<nsIWebBrowser> webBrowser; > nsCOMPtr<nsILocalFile> libxul; > nsCOMPtr<nsILocalFile> appDir; > nsCOMPtr<nsIWebNavigation> webNavigation; > nsDynamicFunctionLoad nsFuncs[] = { {"XRE_InitEmbedding", > (NSFuncPtr*)&XRE_InitEmbedding}, > {"XRE_TermEmbedding", > (NSFuncPtr*)&XRE_TermEmbedding}, > {0, 0} }; > nsresult rv; > rv = XPCOMGlueStartup("/home/raravi/xulrunner-sdk/bin/libxpcom.so"); > if (NS_FAILED(rv)) > { > printf("XPCOMGlueStartup\n"); > } > rv = XPCOMGlueLoadXULFunctions(nsFuncs); > if (NS_FAILED(rv)) > { > printf("XPCOMGlueLoadXULFunctions\n"); > } > rv = NS_NewNativeLocalFile( > nsEmbedCString("/home/raravi/xulrunner-sdk/bin"), PR_FALSE, > getter_AddRefs(libxul)); > if (NS_FAILED(rv)) > { > printf("NS_NewNativeLocalFile\n"); > } > rv = NS_NewNativeLocalFile( > nsEmbedCString("/home/raravi/NetBeansProjects/wxXULTest/dist/Debug/GNU-Linux-x86"), > PR_FALSE, getter_AddRefs(appDir)); > if(NS_FAILED(rv)) > { > printf("NS_NewNativeLocalFile\n"); > } > rv = XRE_InitEmbedding(libxul, appDir, 0, 0, 0); > if (NS_FAILED(rv)) > { > printf("XRE_InitEmbedding\n"); > } > webBrowser = do_CreateInstance(NS_WEBBROWSER_CONTRACTID, &rv); > if (NS_FAILED(rv)) > { > printf("do_CreateInstance webBrowser\n"); > } > baseWindow = do_QueryInterface(webBrowser); > rv = baseWindow->InitWindow(frame, 0, 0, 0, 300, 400); > if (NS_FAILED(rv)) > { > printf("InitWindow\n"); > } > rv = baseWindow->Create(); > if (NS_FAILED(rv)) > { > printf("Create\n"); > } > rv =baseWindow->SetVisibility(PR_TRUE); > if (NS_FAILED(rv)) > { > printf("SetVisibility\n"); > } > webNavigation = do_QueryInterface(webBrowser); > rv = webNavigation->LoadURI(NS_LITERAL_STRING("http://mail.yahoo.com/ > ").get(), > nsIWebNavigation::LOAD_FLAGS_NONE, 0, 0, 0); > if (NS_FAILED(rv)) > { > printf("LoadURI\n"); > } > > return true; > > } > > MyFrame::MyFrame(const wxString& title) > : wxFrame(NULL, wxID_ANY, title) > { > wxMenu *fileMenu = new wxMenu; > wxMenu *helpMenu = new wxMenu; > wxMenuBar *menuBar = new wxMenuBar(); > helpMenu->Append(Minimal_About, wxCSTR("&About...\tF1"), wxCSTR("Show > about dialog")); > fileMenu->Append(Minimal_Quit, wxCSTR("E&xit\tAlt-X"), wxCSTR("Quit this > program")); > menuBar->Append(fileMenu, wxCSTR("&File")); > menuBar->Append(helpMenu, wxCSTR("&Help")); > SetMenuBar(menuBar); > CreateStatusBar(2); > SetStatusText(wxCSTR("Welcome to wxWidgets!")); > > } > > void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) > { > XRE_TermEmbedding(); > XPCOMGlueShutdown(); > Close(true); > > } > > void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) > { > wxMessageBox(wxCSTR("This is the minimal wxWidgets sample\n"), > wxCSTR("About wxWidgets minimal sample"), > wxOK | wxICON_INFORMATION, > this); > > } > > This code compiles and runs successfully. But when run, i dont see the > embedded mozilla window...:-( > > Its as if i am running a normal wxWidgets app. What am i doing wrong? > > These are the cmds i use. > > g++ `wx-config --cppflags` -fshort-wchar -c -g > -I/home/raravi/xulrunner-sdk/sdk/include > -I/home/raravi/xulrunner-sdk/include -o > build/Debug/GNU-Linux-x86/_ext/home/raravi/NetBeansProjects/wxXULTest/wxXULTest.o > /home/raravi/NetBeansProjects/wxXULTest/wxXULTest.cpp > > g++ `wx-config --cppflags` -fshort-wchar `wx-config --libs` -o > dist/Debug/GNU-Linux-x86/wxxultest > build/Debug/GNU-Linux-x86/_ext/home/raravi/NetBeansProjects/wxXULTest/wxXULTest.o > /home/raravi/xulrunner-sdk/lib/libxpcomglue.a > > Any help would be greatly appreciately. > > -- > > The most successful people are those who are good at plan B > > rArAvi _______________________________________________ dev-embedding mailing list [email protected] https://lists.mozilla.org/listinfo/dev-embedding
