CreatePenData 

1.0     2.0     

Creates an empty HPENDATA block.

 

Note  This function is provided only for compatibility with version 1.0 of the Pen API and will not be supported in future versions. Use CreatePenDataEx1AOBT_ instead.

 

HPENDATA CreatePenData( LPPENINFO lppeninfo, int cbOem, UINT uScale, UINT gmemFlags )

Parameters

lppeninfo

Address of tablet information to be inserted into the PENINFO3BE5AL5 structure in the pen data header. If this parameter is NULL, the current tablet settings are retrieved from the hardware instead. If there is no tablet, the pen data will not have an embedded PENINFO section and the wPndts member in PENDATAHEADER1AOCX0 will have the PDTS_NOPENINFO flag set.

cbOem

Width of OEM data packet. If this value is greater than or equal to 0, the OEM data overrides the contents of the PENINFO structure, if present; otherwise, a negative value such as -1 can be used to specify that the system should calculate the size of the OEM data packet.

uScale

Data-scaling metric value. This parameter can be one of the following values:

Constant

Description

PDTS_LOMETRIC

Each logical unit is mapped to 0.1 millimeter. Positive x is to the right; positive y is down.

PDTS_HIMETRIC

Each logical unit is mapped to 0.01 millimeter. Positive x is to the right; positive y is down.

PDTS_HIENGLISH

Each logical unit is mapped to 0.001 inch. Positive x is to the right; positive y is down.

PDTS_ARBITRARY

The application has done its own scaling of the data point.

PDTS_STANDARDSCALE

The standard scaling metric; equivalent to PDTS_HIENGLISH.

 

gmemFlags

Flag that specifies whether or not the Windows GlobalAllocF12W9. function should create a shared memory object when the pen data object is created. This should be either 0 or GMEM_DDESHARE. The GMEM_MOVEABLE and GMEM_ZEROINIT flags are added to this value, and other GMEM_ flags are ignored.

Return Value

Returns a handle to a new and empty pen data object if successful; otherwise, it returns NULL.

Comments

The application provides the PENINFO3BE5AL5 structure for the header, the real size of any OEM data stored with each coordinate, and the scale of the coordinates.

The uScale parameter specifies scaling values that are also used in the MetricScalePenData9GBK.JC function and in the PENDATAHEADER1AOCX0 structure member wPndts. The scaling values do not behave in the same way as the Windows scaling units with similar names. For example, a 1-inch line in MM_HIENGLISH will not necessarily be an inch long on the screen because GDI does not know the size of the monitor. However, with PDTS_HIENGLISH in MetricScalePenData, a line drawn an inch long is actually an inch long.

If lppeninfo is NULL, and if there is no tablet on the system (that is, if SendDriverMessage fails), it returns NULL.

The cbOem value must be less than or equal to 12, depending on the size of the OEM data packet. A value of 0 explicitly sets the amount of OEM information to none. A negative value indicates that the size of the OEM data packet is to be calculated by the system. Any existing value for the cbOemData member of PENINFO3BE5AL5 can be overwritten.

See Also

CreatePenDataEx, DestroyPenData