SetStrokeAttributes 

2.0     

Sets attributes of a stroke or of a class of strokes in an HPENDATA object.

int SetStrokeAttributes( HPENDATA hpndt, UINT iStrk, LPARAM lParam, UINT uOption )

Parameters

hpndt

Handle to the HPENDATA object.

iStrk

Zero-based stroke index. A value of IX_END can be used to specify the last available stroke in the pen data.

lParam

A pointer to a structure (cast to the LPARAM type), or a byte, word, or double-word value, depending on uOption. This parameter cannot be NULL.

uOption

Specifies the attributes to set. This parameter has one of the following values:

Constant

Description

SSA_DOWN

Set the up and down state of the pen tip for the stroke specified by iStrk. lParam is nonzero to make it a downstroke or 0 to make it an upstroke.

SSA_PENTIP

Set the pen-tip characteristics (color, width, nib type) used by the stroke specified by iStrk. lParam is a pointer to a PENTIP1AOCX_ structure. If this attribute does not already exist in the stroke class table, a new entry for this type of stroke is created. There can be up to 255 different types of strokes.

SSA_PENTIPCLASS

Set the pen-tip characteristics (color, width, nib) for all strokes of which the stroke specified by iStrk is a member. lParam is a pointer to a PENTIP1AOCX_ structure. If the new type already exists in the stroke class table, the types are merged.

SSA_SELECT

Set the selection status of the stroke specified by iStrk. lParam is nonzero to select it or 0 to deselect it.

SSA_TIME

Set the absolute time of the stroke. lParam is a pointer to an ABSTIME1AOCV. structure. The sec member of the ABSTIME1AOCV. structure specifies the number of seconds since Jan 1, 1970, and the ms member specifies the number of milliseconds offset from that time to the beginning of the stroke.

SSA_USER

Set the user value for the stroke specified by iStrk. lParam is a BYTE, WORD, or DWORD value, and the pen data must have been created with the corresponding size allocated for user values.

SSA_USERCLASS

Set the user value for the class of strokes of which the stroke specified by iStrk is a member. lParam is a BYTE, WORD, or DWORD value, and the pen data must have been created with the corresponding size allocated for user values.

 

Return Value

Returns PDR_OK if successful; otherwise, returns one of the following negative values:

Constant

Description

PDR_COMPRESSED

Pen data is compressed.

PDR_ERROR

Parameter or other unspecified error.

PDR_MEMERR

Memory error.

PDR_PNDTERR

Invalid pen data.

PDR_SCTERR

Stroke class table may be full, or related error.

PDR_STRKINDEXERR

Invalid stroke index.

PDR_TIMESTAMPERR

Timing information was removed.

PDR_VERSIONERR

Could not convert old pen data.

 

Comments

The bounding rectangle of the pen data is recalculated each time the SSA_DOWN option is used, because the rectangle represents the bounds of only the pen-down points. Setting a pen-up point to the down state simply adds (union) the bounding rectangles of the existing pen data and the stroke. Setting a pen-down point to the up state is more calculation-intensive, however, since the bounding rectangle must be calculated from all of the remaining strokes.

See Also

CreatePenDataEx, GetStrokeAttributes, GetStrokeTableAttributes, SetStrokeTableAttributes, PENTIP