Index   Commented   Search   About

AddPenInputHRC

As the pen moves, an application continually gets data from the pen driver by calling GetPenInput. It then passes the retrieved information to the recognizer via AddPenInputHRC. This function may be called many times before the user completes the stroke. Each time, AddPenInputHRC receives a small subset of points that collectively form a pen stroke.

Along with the subset of points, AddPenInputHRC receives a STROKEINFO structure that represents the points in the subset. For example, the member dwTick contains the starting time for each subset, not the entire stroke. (The starting time of the first subset of a stroke is also the starting time of the entire stroke.) Similarly, cPnt contains the point count only for the current subset.

The following example lets the system take care of accumulating the points. It calls the AddPointsPenData API function to add the subset of points to the HPENDATA block belonging to the HRC. The code also demonstrates how a recognizer can determine when one stroke ends and another begins. This allows the recognizer to take some intermediate steps to facilitate recognition at the end of each stroke. Such intermediate work can remove some of the burden from ProcessHRC, improving response time and perhaps accuracy as well.

int WINAPI AddPenInputHRC( HRC hrc, LPPOINT lppnt, LPVOID lpvOem,

UINT oemdatatype, LPSTROKEINFO lpsi )

{

LPHRCinternal lphrc = (LPHRCinternal) hrc; // Pointer to HRC

int iRet = HRCR_OK; // Return code

.

.

.

//

// If state change from down to up (or vice versa), the previous

// stroke has ended and the point data that lppnt points to belongs

// to a new stroke. Take any intermediate action to process the

// just-completed stroke.

//

if (lpsi->wPdk != lphrc->wPdk)

{

.

. // Take intermediate action

.

lphrc->wPdk = lpsi->wPdk // Note new pen state

}

// Accumulate stroke points in internal HPENDATA object

if (!AddPointsPenData( lphrc->hpendata, // HPENDATA handle

lppnt, // Point subset

lpvOem, // OEM data

lpsi )) // Subset STROKEINFO

iRet = HRCR_ERROR;

.

.

.

// Return appropriate error code (HRCR_OK or HRCR_ERROR)

return (iRet);

}

Related Links

Software for Delphi and C++ Builder developers
Software for Visual Studio .NET developers
Software for Visual Basic 6 developers
Delphi Tips&Tricks
MegaDetailed.NET

More Online Helps

Win32 Programmer's Reference (win32.hlp)
Win32 Multimedia Programmer's Reference (mmedia.hlp)
OLE Programmer's Reference (ole.hlp)
Microsoft Windows Sockets 2 Reference (sock2.hlp)
Microsoft Windows Telephony API (TAPI) Programmer's Reference (tapi.hlp)
Unix Manual Pages

Free Tech Secrets ;) Copyright © 2008 Free Tect Secrets ;) greatis just4fun network just4fun