Хочу в свою программу вустроить gecko. От нее мне нужно отображение Html который формируется в программе.
Что сделал:
Скачал xulrunner-1.9.2.en-US.win32.sdk.
Установил. Зарегистрировал.
Написал программу:
#include "test.h"
#include <QApplication>
# ifndef XP_WIN
# define XP_WIN
# endif
#include "nsComponentManagerUtils.h"
#include "nsEmbedCID.h"
#include "nsIBaseWindow.h"
#include "nsIWeakReference.h"
#include "nsIWebBrowser.h"
#include "nsIWebNavigation.h"
#include "nsEmbedAPI.h"
#include "nsEmbedString.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
test w;
w.show();
nsCOMPtr<nsILocalFile> mreAppDir;
nsresult rv;
char* path;
path = "C:\\xulrunner-sdk-1.9.2\\bin";
rv = NS_NewNativeLocalFile(nsEmbedCString(path), TRUE, getter_AddRefs(mreAppDir));
if(NS_FAILED(rv)) return 1;
rv = NS_InitEmbedding(mreAppDir, nsnull);
if(NS_FAILED(rv)) return 1;
// ----- 2
nsCOMPtr<nsIWebBrowser> mWebBrowser = do_CreateInstance(NS_WEBBROWSER_CONTRACTID, &rv);
if(NS_FAILED(rv)) return 1;
// ---- 3
nsCOMPtr<nsIBaseWindow> baseWindow(do_QueryInterface(mWebBrowser, &rv));
if(NS_FAILED(rv)) return 1;
RECT rcLocation;
::GetClientRect(w.winId(), &rcLocation);
rv = baseWindow->InitWindow(w.winId(), nsnull, 0, 0,
rcLocation.right - rcLocation.left,
rcLocation.bottom - rcLocation.top);
if(NS_FAILED(rv)) return 1;
rv = baseWindow->Create();
if(NS_FAILED(rv)) return 1;
nsCOMPtr<nsIWebNavigation>
webNavigation(do_QueryInterface(mWebBrowser, &rv));
if(NS_FAILED(rv)) return 1;
rv = webNavigation->LoadURI(NS_LITERAL_STRING("file://C:/Temp/browser.xml").get(),
nsIWebNavigation::LOAD_FLAGS_NONE,
nsnull, nsnull, nsnull);
if(NS_FAILED(rv)) return 1;
rv = baseWindow->SetVisibility(PR_TRUE);
if(NS_FAILED(rv)) return 1;
return a.exec();
}
Запускается. Показывает страничку. Но при попытке прокрутить страничку вниз, программа вылетает. Ни как не могу разобраться в чем дело.
Можете помочь?