Автор Тема: Помогите разобраться  (Прочитано 2639 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн wellrus

  • Участник форума
  • Сообщений: 1
    • Просмотр профиля
Помогите разобраться
« : 29 Июля 2010, 11:55:31 »
Хочу в свою программу вустроить 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();
}

Запускается. Показывает страничку. Но при попытке прокрутить страничку вниз, программа вылетает. Ни как не могу разобраться в чем дело.
Можете помочь?