Contents |
下列代码演示了如何让控件接受拖放触摸事件。
缺省的,点拖放事件和点移动事件没有发送到控件中。缺省情况下,当一个窗口生成后的移动,拖动,进入和退出事件,是不会传递到client的,为了让控件能够接收到这些,我们需要在控件构造的环节呼叫EnableDragEvents(),之后,控件就可以调用 HandlePointerEventL()来接收拖动事件。
我们假设这里为一个UI界面的应用程序
需要下列能力和链接库:
CAPABILITY None
LIBRARY cone.lib
include <COECNTRL.H>
void CSomeAppView::ConstructL(const TRect& aRect)
{
// Create a window for the container
CreateWindowL();
.
. .
. . .
// Enable Drag Events.
EnableDragEvents();
// OR can also be done with
Window().PointerFilter(EPointerFilterDrag, 0);
.. ..
}
在 HandlePointerEventL()方法中,控件接收到拖移事件通知,我们可以在这里进行相关处理
void CSomeAppView::HandlePointerEventL(const TPointerEvent& aPointerEvent)
{
switch (aPointerEvent.iType)
{
.
. .
. . .
case TPointerEvent::EDrag:
{
// Handle drag event here.
break;
}
case TPointerEvent::EMove:
{
// Handle move event here.
break;
}
default:
{
// do something
break;
}
}
这个控件没有提供函数来关闭这些事件,但我们可以通过Window Server API来完成,可以调用Window()->PointerFilter()方法来处理
// A 1 bit causes the corresponding event to be filtered out, a 0 bit lets through the corresponding event.
Window().PointerFilter(EPointerFilterDrag, 1);
拖放和移动事件将被开启和关闭
No related wiki articles found