我正在使用Carbide.C++ 2.7与S60 5th Ed SDK来创建我的应用程序,
在我向应用程序添加设置列表后,我从"选项菜单"中删除了"更改"项,我将"退出"更改为"返回",并将左按钮标题设置为空 - 而不是选项 - 问题是当我触摸设置列表项目的任何项目时没有响应,我必须使用"输入键"打开项目编辑器 - 无论是卷项目还是二进制项目, 等 - 那么缺少什么或导致此问题?
任何建议将不胜感激,因为我找不到使用不同SDK创建的两个设置列表之间的区别。
我使用 S60 3rd Ed FP1 SDK 创建了另一个应用程序 - 作为一个简单的测试 - 我尝试了它,它可以通过双击触摸和输入键正常工作。(在 E7 上测试)。
我用 S60 5th Ed 创建了相同的示例,并删除了"更改"菜单,但它不响应触摸事件,而是仅响应 Enter 键事件。(在 E7 上测试)。
我在硬质合金事件/属性视图中比较了两个项目,它们是相同的,我打开了两个项目 src 文件,它们是相同的。
提前非常感谢。
我发现Carbide.C++默认情况下不包括"触摸"事件处理,即使我正在创建我的应用程序使用支持"触摸"事件的第 5 版 SDK。所以我需要添加EAknTouchCompatible。
void AppUi::ConstructL()
{
// [[[ begin generated region: do not modify [Generated Contents]
BaseConstructL( EAknEnableSkin | EAknEnableMSK | EAknTouchCompatible);
InitializeContainersL();
// ]]] end generated region [Generated Contents]
}
要通过"一键"激活项目编辑器,我们需要覆盖MEikListBoxObserver支持的虚拟功能
void CSettingItemList::HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType)
{
if (aEventType == EEventItemClicked || aEventType == EEventEnterKeyPressed || aEventType == EEventItemSingleClicked)
{
//Now with one Tap it opens the control editor.
//Using EFalse means not called from menu,
//so it doesn't show the Edit dialog with binarysetting control (On/Off).
EditItemL( ListBox()->CurrentItemIndex(), EFalse ); }
}
}