Elo TouchSystems MonitorMouse FOR WINDOWS NT Version 2.0 User Manual

Page 33

Advertising
background image

28

Appendix B - Programming Options

The following example code demonstrates how to obtain Z data. For a complete
example, see the included source code for ZAXIS.EXE.

#include "mmioctl.h"

HANDLE hndFile;

// Win32 handle of "MMDev" device

LONG

IoctlCode;

// Function to perform

ULONG

DataLength;

// Output buffer data length

DWORD

ReturnedLength;

// Actual number of bytes returned

LONG

IOBuffer;

// Input/output system buffer

BOOL

IoctlResult;

// Result of operation

//

// Open Win32 touchscreen device(MMDev)

//

hndFile = CreateFile(

// Open the device "MMDev"

"\\\\.\\MMDev",
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
0,
NULL

);

if (hndFile == INVALID_HANDLE_VALUE) {// Was the device opened?

MessageBox(NULL, "Unable to open touchscreen",

"Driver Loaded?", MB_OK);

return(0);

}

// See if controller supports Z before going any further

IOBuffer = 0;
IoctlCode = IOCTL_MM_ZAXIS_SUPPORT;
IoctlResult = 0;

DataLength = 4;

IoctlResult = DeviceIoControl(

hndFile,

// Handle to device

IoctlCode,

// IO Control code for Read

NULL,

// We don't need input data

0,

// No input buffer required, NULL bytes

&IOBuffer,

// Buffer from driver.

DataLength,

// Length of buffer in bytes.

&ReturnedLength,

// Bytes placed in DataBuffer.

NULL

// NULL means wait till op. completes.

);

if (!IoctlResult)

// No z

MessageBox(NULL, "This controller does not support Z reporting

capabilities",

"NO Z", MB_OK | MB_ICONEXCLAMATION);

//
// Call the driver to get Z values

//

IOBuffer = 0;
IoctlResult = 0;

DataLength = sizeof(LONG);

Advertising