×

Discussion Board

Results 1 to 5 of 5
  1. #1
    Registered User
    Join Date
    Mar 2010
    Posts
    4

    Вылеты при выборе пунктов в меню

    телефон - 5800 xpress music
    проблема - создается листбокс с выбираемыми пунктами, класс производный от CAknMarkableListDialog, при выборе каких-либо пунктов все нормально, но если выделить один объект,а затем снять с него выделение, прога вылетает, если выделено несколько объектов, то проблем со съемом выделения нет, вылетает только если снимать с одного пункта. на эмуляторе такого рода проблема была, если нажать ентер с клавиатуры, выдавало панику cone 10, здесь в краш мониторе выдают kern exec 3. ктонибудь может помочь? нужно ли тут дописывать реализацию handlepointereventl?

  2. #2
    Nokia Developer Champion
    Join Date
    Jan 2008
    Location
    Moscow, Russia
    Posts
    3,348

    Re: Вылеты при выборе пунктов в меню

    Можете показать обработчик, в котором у вас весь этот процесс оформлен или нам самим догадаться? Как правило самой частой причиной "kern exec 3" является обращение к несуществующему указателю. Попробуйте локализовать проблему прогнав проблемный участок кода под отладчиком.

    Если планируете использовать собственный механизм обработки событий от стилуса, то вам понадобится дописать реализацию HandlePointerEventL().

  3. #3
    Registered User
    Join Date
    Mar 2010
    Posts
    4

    Re: Вылеты при выборе пунктов в меню

    для обработки событий с клавиатуры вот такой метод
    TKeyResponse CMarkableListDialog::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
    {

    if (aKeyEvent.iScanCode == EKeyDevice3 || aKeyEvent.iCode == EKeyLeftArrow || aKeyEvent.iCode == EKeyRightArrow)
    {
    CEikListBox* listBox = (CEikListBox*) Control(ESelectionListControl);
    listBox->View()->ToggleItemL(listBox->View()->CurrentItemIndex());
    listBox->DrawDeferred();
    return EKeyWasConsumed;
    }
    if(aKeyEvent.iCode == 63557) return EKeyWasNotConsumed;// - код нажатия enter с клавиатуры, в эмуляторе вылетает cone 10
    return CAknMarkableListDialog::OfferKeyEventL(aKeyEvent, aType);
    }

    метод дописал под стилус, но работает неправильно, вылетает с kern exec 3 при нажатии на пункт меню
    void CMarkableListDialog::HandlePointerEventL(const TPointerEvent& aEvent)
    {
    CCoeControl::HandlePointerEventL(aEvent);
    if(aEvent.iType == TPointerEvent::EButton1Down)
    {
    if(Rect().Contains(aEvent.iPosition))
    {
    CEikListBox* listBox = (CEikListBox*) Control(ESelectionListControl);
    listBox->View()->ToggleItemL(listBox->View()->CurrentItemIndex());
    listBox->DrawDeferred();
    }

    }

    }
    проблема в том, что если не писать реализацию под стилус, все работает и так, но при нажатии стилусом по пункту меню aKeyEvent равен EKeyEnter, при котором вылет и случается
    Last edited by gr_kane; 2010-06-04 at 11:09.

  4. #4
    Registered User
    Join Date
    Dec 2005
    Posts
    93

    Re: Вылеты при выборе пунктов в меню

    Quote Originally Posted by gr_kane View Post
    вылетает с kern exec 3 при нажатии на пункт меню
    Очевидно вылетает при обращении к
    Code:
    CEikListBox* listBox = (CEikListBox*) Control(ESelectionListControl);
    Проверяйте listBox на NULL (да и вообще всегда проверяйте указатели на NULL).

    Quote Originally Posted by gr_kane View Post
    в эмуляторе вылетает cone 10
    Описание паники CONE 10: The control already owns a window.
    Почему решили, что вылетает именно в этом месте? Вылет по KERN-EXEC 3 не локализовали, а по CONE 10 нашли? Странно как-то...

  5. #5
    Registered User
    Join Date
    Mar 2010
    Posts
    4

    Re: Вылеты при выборе пунктов в меню

    вылет по kern exec 3 выдает crash monitor на телефоне, cone 10 выдавал эмулятор. на эмуляторе с проблемой разобрался, но на телефоне по прежнему вылетает при снятии выделения, если только один пункт меню был выбран, в OfferKeyEventL даже не заходит, сразу вылет

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
×