Feb 16, 2008 19:43
понадобился мне диалог с несколькими чекбоксами. CAknListQueryDialog вроде как подходил по всем параметрам. но обнаружилось странное поведение: если не отмечен ни один чекбокс и нажать софтклавишу ok, то перед закрытием диалога текущий чекбокс отмечается. в прошивке был сходу найден характерный код, но он висел на обработке клавиши EKeyApplicationF. так как такой клавиши в моём телефоне нет, я посчитал это артефактом от каких-нибудь коммуникаторов и приступил к проблеме с другой стороны: унаследовался от CAknListQueryDialog, переопределил потенциально «методы», запустил программу и получил логи. а в логах проявилась та самая EKeyApplicationF. расследование показало, что на все листбоксы вешается глобальный хук, который при получении события «нажали на софтклавишу ok» посылает листбоксу EKeyApplicationF. вполне себе логичное действия до того момента, как вы начинаете использовать листбокс у которого элементы - чекбоксы, а выделение - состояние этих самых чекбоксов.
ну а как известно знание причины проблемы - половина решения, а в данном случае - 99%. замена ok на done приводит к желаемому поведению.
ngage,
development