Полезная информация

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

Разработка » Открытие XUL-окна из XPCOM компонента на C++ » 28-10-2010 20:35:37

Сделал тестовый JavaScript XPCOM компонент - результат тот же.
Использую следующий код:

const MYCOMPONENT_CONTRACTID = '@mozilla.org/MyComponent;1';
const MYCOMPONENT_CID = Components.ID('{E7759D3B-4C5C-48df-B7D2-6EAC09BB980D}');
const MYCOMPONENT_IID = Components.interfaces.nsIMyComponent;

function nsMyComponent() { }

nsMyComponent.prototype = {
    reverseIt: function(s) {
        var a = s.split("");
        a = a.reverse();

    var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
                                      .getService(Components.interfaces.nsIPromptService);

        var ww = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
                           .getService(Components.interfaces.nsIWindowWatcher);
        var win = ww.openWindow(null, "chrome/content/TestWindow.xul",
                                "Test", "chrome,resizable,centerscreen,dependent,dialog", null);

    promptService.alert( null, "Title", win );

        return a

Разработка » Открытие XUL-окна из XPCOM компонента на C++ » 26-10-2010 20:37:40

Здравствуйте.

Столкнулся с такой проблемой - пишу XPCOM-компонент на С++, так вот из под него
нужно иметь возможность открыть XUL-окно.
Использую такой код:

  nsresult rv;

  nsCOMPtr<nsIWindowWatcher> myDialog( do_GetService( "@mozilla.org/embedcomp/window-watcher;1", &rv ) );
  if( NS_FAILED( rv ) )
  {
    MessageBoxA( 0, "1", "Error", MB_OK );
    return NULL;
  }

  nsCOMPtr<nsIDOMWindow> win;
  rv = myDialog->OpenWindow( nsnull, "chrome/content/TestWindow.xul", "OCC", "resizeable,centerscreen", nsnull, getter_AddRefs(win) );
  if ( NS_FAILED( rv ) )
    MessageBoxA( 0, "2", "Error", MB_OK );

  myDialog->SetActiveWindow( win );

Но, к сожалению, никакого окна не отображается (MessageBox-ы с ошибками не выводятся).
TestWindow.xul заведомо рабочий. По документации Mozilla искал, но толком ничего
не нашел.
Может кто-нибудь что-либо посоветовать по этому поводу?

Заранее спасибо.

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]