Starting the Chain of Events

When an application receives a WM_LBUTTONDOWN message, that message signals the beginning of an input session. (For a definition of input session, see "Beginning an Input Session" in Chapter 2.) The following code fragment shows how to handle the message when not calling DoDefaultPenInput:


PCMINFO pcminfo;

HPCM hpcm;

LONG lExInfo;

int iRet = TRUE;




switch (wMsg)


case WM_LBUTTONDOWN: // Pen down (maybe)

lExInfo = GetMessageExtraInfo();

if (IsPenEvent( wMsg, LOWORD(lExInfo) ) // If true pen down,

{ // take the actions

. // described in the

. // text below



else // No, it's a mouse

{ // button down

The application initializes a PCMINFO structure and INKINGINFO structure in preparation for data collection and display. DoDefaultPenInput handles this task automatically, then provides the application an opportunity to selectively change the default values. (For a description of the submessages PE_GETPCMINFO and PE_GETINKINGINFO, see "DoDefaultPenInput Messages" in Chapter 2.) If it does not call DoDefaultPenInput, an application must initialize the structures itself, as shown here:

#define TIME_OUT 1000 // Time-out in msec






pcm.cbSize = sizeof( PCMINFO ); // Required

pcm.dwPcm = PCM_TIMEOUT | PCM_RECTBOUND; // When to end session

pcm.dwTimeOut = TIME_OUT; // Time-out value in ms

GetWindowRect( hwnd, (LPRECT) &pcm.rectBound ); // Use window borders

ink.cbSize = sizeof( INKINGINFO ); // initialize


. // structure "ink"


The above lines specify that the input session ends when the pen travels (or taps) outside the hwnd window or pauses for the number of milliseconds set by the constant TIME_OUT. For a detailed description of these structures, see the entries for PCMINFO and INKINGINFO in Chapter 11, "Pen Application Programming Interface Structures."

Software for developers
Delphi Components
.Net Components
Software for Android Developers
More information resources
Unix Manual Pages
Delphi Examples
Databases for Amazon shops developers
Amazon Categories Database
Browse Nodes Database