Cловить в javascript BackSpace, когда в фокусе COM obj
От: SexMachine Украина www.is.svitonline.com/sashko1
Дата: 14.01.09 16:04
Оценка:
Доброго времени суток всем знающим, ищущим, и просто праздношатающимся

Значится проблема: имеем некий COM объект, написанный на ATL, и представляющий собой обертку вокруг RichEdit. ну вот так примерно:


class ATL_NO_VTABLE CAnRichEditCtl : 
  public CComObjectRootEx<CComSingleThreadModel>,
  public CComControl<CAnRichEditCtl>,
  ...
{
  CContainedWindow m_ctlRichEdit;

  CAnRichEditCtl() : m_ctlRichEdit(RICHEDIT_CLASS, this, 1)
  {
    ...
  }
...
}



И вот если его захостить в html страничке, все хорошо, но невозможно отловить нажатие BackSpace в нашем объекте.
Вот так например:

<html><body><script>
function fnDetectKeyInActiveX()
{
  alert("Editor Down " + event.type +" : "+ event.keyCode );
}
</script>
<object id="AnRichEditObject" onkeydown="fnDetectKeyInActiveX();" style="LEFT: 0px; TOP: 0px" height="300" width="650"
            classid="clsid:????????-????-????-????-????????????">
</object><br>
<object id="ListView" onkeydown="fnDetectKeyInActiveX();" style="LEFT: 0px; TOP: 0px" height="300" width="650"
            classid="clsid:58DA8D8A-9D6A-101B-AFC0-4210102A8DA7">
</object><br>
<div>
<textarea height="300" width="650" onkeydown="fnDetectKeyInActiveX();"></textarea>
</div></body></html>


Что интересно, его также невозможно отловить и с других COM объектов, как например в приведенном в страничке.
А в html объекте textarea — всё ловится.

Собственно вопрос: как это побороть, или, если нельзя побороть, почему так сделано ?
У кого-то варит голова, у кого-то — желудок...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.