2009-08-28 4 views
1

Я применил nsIWebBrowser в своем приложении. Поскольку я просто создаю HTML для этого на лету, я использую OpenStream, AppendToStream и CloseStream для добавления контента. Мне нужно добавить слушателей событий для перемещения мыши через веб-браузер, а также щелчков мышью. Я читал документацию и много раз пробовал, но ничего не пробовал. Например, код ниже, казалось бы, делать правильные вещи, но ничего не делает:Как подключить прослушиватели событий мыши к встроенным nsIWebBrowser в C++

nsCOMPtr<nsIDOMWindow> domWindow; 
    mWebBrowser->GetContentDOMWindow(getter_AddRefs(domWindow)); 

    if (!mEventTarget) { 
    mEventTarget = do_QueryInterface(domWindow); 

    if (mEventTarget) 
     mEventTarget->AddEventListener(NS_LITERAL_STRING("mouseover"), (nsIDOMEventListener *)mEventListener, PR_FALSE); 
} 

Возможно, он не работает, потому что это выполняется во время инициализации, но перед любым содержанием на самом деле добавлен. Однако, если я добавлю его во время AppendStream или CloseStream, он будет segfaults.

Пожалуйста, скажите мне простой способ сделать это.

ответ

2

Ну, вот ответ:

nsCOMPtr<nsIDOMEventTarget> cpEventTarget; 
nsCOMPtr<nsIDOMWindow> cpDomWin; 
m_pWebBrowser->GetContentDOMWindow (getter_AddRefs(cpDomWin)); 
nsCOMPtr<nsIDOMWindow2> cpDomWin2 (do_QueryInterface (cpDomWin)); 
cpDomWin2->GetWindowRoot(getter_AddRefs(cpEventTarget)); 

rv = cpEventTarget->AddEventListener(NS_LITERAL_STRING("mousedown"), 
       m_pBrowserImpl, PR_FALSE); 
+0

У вас есть некоторые проблемы форматирования с кодом;) – sdwilsh

+0

Было бы также неплохо, чтобы увидеть контур для 'реализации прослушивателя событий nsIDOMEventListener', как она создается , –

 Смежные вопросы

  • Нет связанных вопросов^_^