Método IStylusPlugin::InAirPackets (rtscom.h)
Notifica o objeto que implementa o plug-in de que a caneta está se movendo acima do digitalizador.
Sintaxe
HRESULT InAirPackets(
[in] IRealTimeStylus *piRtsSrc,
[in] const StylusInfo *pStylusInfo,
[in] ULONG cPktCount,
[in] ULONG cPktBuffLength,
[in] LONG *pPackets,
[in, out] ULONG *pcInOutPkts,
[in, out] LONG **ppInOutPkts
);
Parâmetros
[in] piRtsSrc
O objeto RTS ( Classe RealTimeStylus ) que enviou a notificação.
[in] pStylusInfo
Uma estrutura stylusInfo que contém as informações sobre o RTS associado à caneta.
[in] cPktCount
O número de propriedades por pacote de dados.
[in] cPktBuffLength
O comprimento, em bytes, do buffer apontado por pPackets. A memória ocupada por cada pacote é (cPktBuffLength / cPktCount). Os valores válidos são de 0 a 0x7FFF, inclusive.
[in] pPackets
Um ponteiro para o início dos dados do pacote. Ela é somente leitura.
[in, out] pcInOutPkts
O número de LONGs em ppInOutPkt.
[in, out] ppInOutPkts
Um ponteiro para uma matriz de pacotes de dados de caneta modificados. O plug-in pode usar esse parâmetro para alimentar dados de pacotes modificados para pacotes downstream. Para um valor diferente de NULL, o RTS enviará esses dados para plug-ins usando o parâmetro pPacket .
Retornar valor
Para obter uma descrição dos valores retornados, consulte Classes e Interfaces – Análise de Tinta.
Comentários
Esse método é chamado quando os pacotes de dados são criados pela caneta quando ele está no intervalo, mas está se movendo acima do digitalizador e não tocando no digitalizador. Você pode retornar uma matriz de pacotes modificados usando o parâmetro ppInOutPkt . Crie um buffer e aponte ppInOutPkts para ele. Somente um pacote pode estar presente nesse local.
- Quando a notificação exige que o plug-in adquira mais informações sobre o digitalizador específico do qual a notificação se originou.
- Quando você insira notificações personalizadas adicionais por meio do sistema.
Exemplos
O exemplo de código C++ a seguir implementa um método do Método IStylusPlugin::P ackets que modifica os dados X,Y para conter os pacotes a um retângulo. O mesmo código pode ser aplicado a uma implementação do método IStylusPlugin::InAirPackets.
STDMETHODIMP CPacketModifier::Packets(
/* [in] */ IRealTimeStylus *piRtsSrc,
/* [in] */ const StylusInfo *pStylusInfo,
/* [in] */ ULONG cPktCount,
/* [in] */ ULONG cPktBuffLength,
/* [size_is][in] */ LONG *pPackets,
/* [out][in] */ ULONG *pcInOutPkts,
/* [out][in] */ LONG **ppInOutPkts)
{
BOOL fModified = FALSE; // Did we change the packet data?
ULONG cPropertyCount = cPktBuffLength/cPktCount; // # of properties in a packet
ULONG iOtherProps = 0; // Properties other than X and Y
// Allocate memory for modified packets
LONG* pTempOutPkts = (LONG*)CoTaskMemAlloc(sizeof(ULONG)*cPktBuffLength);
// For each packet in the packet data, check whether
// its X,Y values fall outside of the specified rectangle.
// If so, replace them with the nearest point that still
// falls within the rectangle.
for (ULONG i = 0; i < cPktCount; i += cPropertyCount)
{
// Packet data always has X followed by Y
// followed by the rest
LONG x = pPackets[i];
LONG y = pPackets[i+1];
// Constrain points to the input rectangle
x = (x < m_filterRect.left ? m_filterRect.left : x);
x = (x > m_filterRect.right ? m_filterRect.right : x);
y = (y < m_filterRect.top ? m_filterRect.top : y);
y = (y > m_filterRect.bottom ? m_filterRect.bottom : y);
// If necessary, modify the X,Y packet data
if ((x != pPackets[i]) || (y != pPackets[i+1]))
{
pTempOutPkts[i] = x;
pTempOutPkts[i+1] = y;
iOtherProps = i+2;
// Copy the properties that we haven't modified
while (iOtherProps < (i + cPropertyCount))
{
pTempOutPkts[iOtherProps] = pPackets[iOtherProps++];
}
fModified = TRUE;
}
}
if (fModified)
{
// Set the [out] pointer to the
// memory we allocated and updated
*ppInOutPkts = pTempOutPkts;
*pcInOutPkts = cPktCount;
}
else
{
// Nothing modified, release the memory we allocated
CoTaskMemFree(pTempOutPkts);
}
return S_OK;
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP Tablet PC Edition [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Nenhum compatível |
Plataforma de Destino | Windows |
Cabeçalho | rtscom.h |
DLL | RTSCom.dll |
Confira também
Método IStylusPlugin::StylusDown