In my standalone application written on gecko engine LoadURI function
of nsIWebNavigation interface returns NS_ERROR_OUT_OF_MEMORY error.
For assembling I use Visual Studio 7.1 and xulrunner 1.9 options of
its compiler. Enabled support of:
mfc,charaster set = Use Unicode Character Set,
Command line(C\C++):
/Od /I "C:\CL\cl4\\" /I "C:\CL\cl4\\XulRunner-sdk\include\xpcom" /I "C:
\CL\cl4\\XulRunner-sdk\include\string" /I "C:\CL\cl4\\XulRunner-sdk
\include\embed_base" /I "C:\CL\cl4\\XulRunner-sdk\include\webbrwsr" /I
"C:\CL\cl4\\XulRunner-sdk\include\webshell" /I "C:\CL\cl4\\XulRunner-
sdk\include\windowwatcher" /I "C:\CL\cl4\\XulRunner-sdk\include
\profile" /I "C:\CL\cl4\\XulRunner-sdk\include\necko" /I "C:\CL\cl4\
\XulRunner-sdk\include\docshell" /I "C:\CL\cl4\\XulRunner-sdk\include
\dom" /I "C:\CL\cl4\\XulRunner-sdk\include\widget" /I "C:\CL\cl4\
\XulRunner-sdk\include\uriloader" /I "C:\CL\cl4\\XulRunner-sdk\include
\shistory" /I "C:\CL\cl4\\XulRunner-sdk\include\webbrowserpersist" /I
"C:\CL\cl4\\XulRunner-sdk\include\profdirserviceprovider" /I "C:\CL
\cl4\\XulRunner-sdk\include\xulapp" /I "C:\CL\cl4\\XulRunner-sdk
\include\nspr" /I "C:\CL\cl4\\XulRunner-sdk\include" /D "WIN32" /D
"_WINDOWS" /D "_DEBUG" /D "_AFXEXT" /D "_EXPORTS" /D "XPCOM_GLUE" /D
"MOZ_DEBUG" /D "_WINDLL" /D "_AFXDLL" /D "_UNICODE" /D "UNICODE" /Gm /
EHsc /RTC1 /MDd /GR /Fo"Debug/" /Fd"Debug/vc70.pdb" /W3 /nologo /c /
Wp64 /ZI /TP
Command line(Linker):
/OUT:"..\_Debug/WebBrowserPreview.dll" /INCREMENTAL /NOLOGO /
LIBPATH:"C:\CL\cl4\\xulrunner-sdk\lib" /LIBPATH:"C:\CL\cl4\\profile
\dirserviceprovider\standalone" /DLL /DEF:".\WebBrowserPreview.def" /
DEBUG /PDB:"..\_Debug/WebBrowserPreview.pdb" /SUBSYSTEM:WINDOWS /
IMPLIB:"..\_Debug/WebBrowserPreview.lib" /MACHINE:X86 string_s.lib
xpcomglue.lib nspr4.lib profdirserviceprovidersa_s.lib "\Cl
\cl4\xulrunner-sdk\lib\string_s.lib" "\Cl\cl4\xulrunner-sdk\lib
\xpcomglue.lib" "\Cl\cl4\xulrunner-sdk\lib\nspr4.lib"
int InitGecko(CL::SDK::IApplication* pApp)
{
//
nsresult rv = 0;
CL::SDK::IMainFrame* pIFrm = pApp->GetMainFrame();
CFrameWnd* pFrm = dynamic_cast<CFrameWnd*>(pIFrm);
m_hInstanceApp = GetModuleHandle(NULL);
static const GREVersionRange vr = {
"1.8a1",
PR_TRUE,
"2.0",
PR_FALSE
};
char* MozillaPath;
MozillaPath = MOZILLA_DLLS_PATH;
char xpcomDll[_MAX_PATH];
_snprintf(xpcomDll, sizeof(xpcomDll), "%sxpcom.dll", MozillaPath);
rv = XPCOMGlueStartup(xpcomDll);
if (NS_FAILED(rv))
return 3;
//rv = NS_InitEmbedding(nsnull, nsnull);
WCHAR *xulPath;
char xulDll[_MAX_PATH];
_snprintf(xulDll, sizeof(xulDll), "%sxul.dll", MozillaPath);
CCommonString::ToWideString(xulDll,xulPath);
HINSTANCE xulModule = LoadLibraryEx(xulPath, NULL, 0);
if (!xulModule)
return 4;
WCHAR temp[_MAX_PATH];
GetModuleFileName(xulModule, temp, sizeof(temp));
XRE_InitEmbedding =
(XRE_InitEmbeddingType) GetProcAddress(xulModule,
"XRE_InitEmbedding");
if (!XRE_InitEmbedding)
return 5;
XRE_TermEmbedding =
(XRE_TermEmbeddingType) GetProcAddress(xulModule,
"XRE_TermEmbedding");
if (!XRE_TermEmbedding)
return 5;
nsCOMPtr<nsILocalFile> xuldir;
rv = NS_NewNativeLocalFile(nsCString(xpcomDll), PR_FALSE,
getter_AddRefs(xuldir));
if (NS_FAILED(rv))
return 6;
WCHAR* self = new WCHAR[_MAX_PATH];
GetModuleFileName(m_hInstanceApp, self, _MAX_PATH);
nsCOMPtr<nsILocalFile> appdir;
char* selfch;
CCommonString::ToMBString(self, selfch);
rv = NS_NewNativeLocalFile(nsCString(selfch), PR_FALSE,
getter_AddRefs(appdir));
if (NS_FAILED(rv))
return 8;
rv = XRE_InitEmbedding(xuldir, appdir, nsnull, nsnull, 0);
if (NS_FAILED(rv))
return 9;
if (NS_FAILED(StartupProfile()))
return 10;
delete xulPath;
delete selfch;
delete self;
nsCOMPtr<nsIWebBrowser>
gecko(do_CreateInstance(NS_WEBBROWSER_CONTRACTID));
nsCOMPtr<nsIBaseWindow>
baseWindow(do_QueryInterface(gecko, &rv));
NS_ENSURE_SUCCESS(rv, rv);
RECT rcLocation;
::GetClientRect(pFrm->m_hWnd, &rcLocation);
if (::IsRectEmpty(&rcLocation)) {
rcLocation.bottom++;
rcLocation.top++;
}
rv = baseWindow->InitWindow(pFrm->m_hWnd, nsnull, 0, 0,
rcLocation.right - rcLocation.left,
rcLocation.bottom - rcLocation.top);
NS_ENSURE_SUCCESS(rv, rv);
rv = baseWindow->Create();
NS_ENSURE_SUCCESS(rv, rv);
rv = baseWindow->SetVisibility(PR_TRUE);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIWebNavigation>
webNavigation(do_QueryInterface(gecko, &rv));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsISupports> pISupports = NULL;
rv = webNavigation->LoadURI(NS_LITERAL_STRING("http://
www.google.com").get(),
nsIWebNavigation::LOAD_FLAGS_NONE,
nsnull, nsnull, nsnull);
return rv;
}
_______________________________________________
dev-embedding mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-embedding