Csdn不好传文件,所以把代码传上来
.h头文件
- #ifndef __SYS_TOUCH_H__
- #define __SYS_TOUCH_H__
-
- #ifdef __cplusplus
- extern "C" {
- #endif
- typedef UINT32 TOUCH_PANEL_SAMPLE_FLAGS, *P_TOUCH_PANEL_SAMPLE_FLAGS;
-
- enum enumTouchPanelSampleFlags
- {
- TouchSampleValidFlag = 0x01,
- TouchSampleDownFlag = 0x02,
- TouchSampleIsCalibratedFlag = 0x04,
-
- TouchSamplePreviousDownFlag = 0x08,
-
- TouchSampleIgnore = 0x10,
-
- TouchSampleMouse = 0x40000000
-
- };
-
- #define TouchSampleDown(Flags)(Flags&TouchSampleDownFlag)
- #define TouchSamplePreviousDown(Flags)(Flags&TouchSamplePreviousDownFlag)
- #define TouchSampleIsMouse(Flags)(Flags&TouchSampleMouse)
-
- #define TPDC_SAMPLE_RATE_ID 0
- struct TPDC_SAMPLE_RATE
- {
- INT SamplesPerSecondLow;
- INT SamplesPerSecondHigh;
- INT CurrentSampleRateSetting;
- };
-
-
-
-
-
-
- typedef UINT32 DDI_TOUCH_PANEL_CALIBRATION_FLAGS;
-
-
-
- #define TPDC_CALIBRATION_POINT_COUNT_ID 1
- struct TPDC_CALIBRATION_POINT_COUNT
- {
- DDI_TOUCH_PANEL_CALIBRATION_FLAGS flags;
- INT cCalibrationPoints;
- };
-
-
-
-
- #define TPDC_CALIBRATION_POINT_ID 2
- struct TPDC_CALIBRATION_POINT
- {
- INT PointNumber;
- INT cDisplayWidth;
- INT cDisplayHeight;
- INT CalibrationX;
- INT CalibrationY;
- };
-
-
-
-
-
-
-
- #define TPSM_SAMPLERATE_HIGH_ID 0x00
- #define TPSM_SAMPLERATE_LOW_ID 0x01
- #define TPSM_PRIORITY_HIGH_ID 0x02
- #define TPSM_PRIORITY_NORMAL_ID 0x04
-
-
-
-
-
- BOOL TouchPanelGetDeviceCaps(INT iIndex, LPVOID lpOutput);
-
- typedef BOOL (*PFN_TOUCH_PANEL_GET_DEVICE_CAPS)(
- INT iIndex, LPVOID lpOutput);
-
- BOOL TouchPanelSetMode(INT iIndex,LPVOID lpInput);
-
- typedef BOOL (*PFN_TOUCH_PANEL_SET_MODE)(
- INT iIndex,LPVOID lpInput);
-
- typedef BOOL (*PFN_TOUCH_PANEL_CALLBACK)(
- TOUCH_PANEL_SAMPLE_FLAGS Flags,INT X,INT Y);
-
- typedef VOID (*PFN_DISP_DRIVER_MOVE_CURSOR)(
- INT32 X,INT32 Y);
-
- BOOL TouchPanelInitializeCursor(
- PFN_DISP_DRIVER_MOVE_CURSOR);
- typedef BOOL (*PFN_TOUCH_PANEL_INITIALIZE_CURSOR)(
- PFN_DISP_DRIVER_MOVE_CURSOR);
-
-
- BOOL TouchPanelEnable(PFN_TOUCH_PANEL_CALLBACK);
- typedef BOOL (*PFN_TOUCH_PANEL_ENABLE)(PFN_TOUCH_PANEL_CALLBACK);
-
- VOID TouchPanelDisable(VOID);
- typedef VOID (*PFN_TOUCH_PANEL_DISABLE)(VOID);
-
-
- BOOL TouchPanelReadCalibrationPoint(INT *pUncalibratedX,INT *pUncalibratedY);
- typedef BOOL (*PFN_TOUCH_PANEL_READ_CALIBRATION_POINT)(
- INT *pUncalibratedX,INT *pUncalibratedY);
-
- VOID TouchPanelReadCalibrationAbort();
- typedef VOID (*PFN_TOUCH_PANEL_READ_CALIBRATION_ABORT)();
-
- BOOL TouchPanelSetCalibration(
- INT32 cCalibrationPoints,
- INT32 *pScreenXBuffer,
- INT32 *pScreenYBuffer,
- INT32 *pUncalXBuffer,
- INT32 *pUncalYBuffer
- );
- typedef BOOL (*PFN_TOUCH_PANEL_SET_CALIBRATION)(
- INT32 cCalibrationPoints,
- INT32 *pScreenXBuffer,
- INT32 *pScreenYBuffer,
- INT32 *pUncalXBuffer,
- INT32 *pUncalYBuffer
- );
-
-
- void TouchPanelCalibrateAPoint(INT32 UncalX,
- INT32 UncalY,INT32 *pCalX,INT32 *pCalY);
- typedef void (*PFN_TOUCH_PANEL_CALIBRATE_A_POINT)(
- INT32 UncalX,INT32 UncalY,INT32 *pCalX,INT32 *pCalY);
-
- void TouchPanelPowerHandler(BOOL bOff);
- typedef void (*PFN_TOUCH_PANEL_POWER_HANDLER)(BOOL bOff);
- #ifdef __cplusplus
- }
- #endif
- #endif
cpp文件
-
- #include <windows.h>
- #include <commctrl.h>
- #include "sysTouch.h"
-
- #define TOUCH_DLL L"\\Windows\\Touch.dll"
-
- HINSTANCE g_hInstTouch = NULL;
- PFN_TOUCH_PANEL_GET_DEVICE_CAPS pfnTouchPanelGetDeviceCaps = NULL;
- PFN_TOUCH_PANEL_SET_MODE pfnTouchPanelSetMode = NULL;
- PFN_TOUCH_PANEL_INITIALIZE_CURSOR pfnTouchPanelInitializeCursor = NULL;
- PFN_TOUCH_PANEL_ENABLE pfnTouchPanelEnable = NULL;
- PFN_TOUCH_PANEL_DISABLE pfnTouchPanelDisable = NULL;
- PFN_TOUCH_PANEL_READ_CALIBRATION_POINT pfnTouchPanelReadCalibrationPoint=NULL;
- PFN_TOUCH_PANEL_READ_CALIBRATION_ABORT pfnTouchPanelReadCalibrationAbort=NULL;
- PFN_TOUCH_PANEL_SET_CALIBRATION pfnTouchPanelSetCalibration = NULL;
- PFN_TOUCH_PANEL_CALIBRATE_A_POINT pfnTouchPanelCalibrateAPoint = NULL;
- PFN_TOUCH_PANEL_POWER_HANDLER pfnTouchPanelPowerHandler = NULL;
-
- PFN_TOUCH_PANEL_CALLBACK pfnOrgTouchPanelCallback = NULL;
-
- HWND g_sipWnd = NULL;
- HWND g_hwWnd = NULL;
- #define HW_CLASSNAME L"CeSipEng"
- INT xSaved = 0;
- INT ySaved = 0;
- int iMinX = 4;
- int iMinY = 4;
- BOOL hwTouchPanelCallback(TOUCH_PANEL_SAMPLE_FLAGS Flags,INT X,INT Y)
- {
- if(NULL == g_sipWnd)
- {
- g_sipWnd = FindWindow(L"SipWndClass", NULL);
- }
-
- g_hwWnd = GetWindow(g_sipWnd, GW_CHILD);
- if(IsWindowVisible(g_hwWnd))
- {
- TCHAR szClassName[32];
- GetClassName(g_hwWnd, szClassName, 32);
- if(wcsicmp(szClassName, HW_CLASSNAME) == 0)
- {
-
- if(Flags == (TouchSampleDownFlag | TouchSampleIsCalibratedFlag
- | TouchSampleValidFlag))
- {
- SendMessage(g_hwWnd, WM_LBUTTONDOWN, 0, MAKELPARAM(X,Y));
- }
-
- else if(Flags == (TouchSampleDownFlag | TouchSamplePreviousDownFlag
- | TouchSampleIsCalibratedFlag |
- TouchSampleValidFlag) &&
- xSaved - X > iMinX || X - xSaved > iMinX &&
- ySaved - Y > iMinY || Y - ySaved > iMinY)
- {
- SendMessage(g_hwWnd, WM_MOUSEMOVE, 0, MAKELPARAM(X,Y));
- }
-
- else if(Flags ==(TouchSampleIsCalibratedFlag |
- TouchSampleValidFlag | TouchSamplePreviousDownFlag))
- {
- SendMessage(g_hwWnd, WM_LBUTTONUP, 0, MAKELPARAM(X,Y));
- }
- xSaved = X;
- ySaved = Y;
- return TRUE;
- }
- else
- return pfnOrgTouchPanelCallback(Flags, X,Y);
- }
- return pfnOrgTouchPanelCallback(Flags, X,Y);
- }
- BOOL APIENTRY DllMain( HANDLE hModule,
- DWORD ul_reason_for_call,LPVOID lpReserved)
- {
- switch ( ul_reason_for_call )
- {
- case DLL_PROCESS_ATTACH:
- DisableThreadLibraryCalls((HMODULE) hModule);
- g_hInstTouch = LoadLibrary(TOUCH_DLL);
- break;
- case DLL_PROCESS_DETACH:
- if(NULL != g_hInstTouch)
- FreeLibrary(g_hInstTouch);
- break;
- }
- return TRUE;
- }
-
- VOID TouchPanelCalibrateAPoint(INT32 UncalX,INT32 UncalY,
- INT32* pCalX,INT32* pCalY)
- {
- if(g_hInstTouch)
- {
- if (NULL == pfnTouchPanelGetDeviceCaps)
- {
- pfnTouchPanelCalibrateAPoint =
- (PFN_TOUCH_PANEL_CALIBRATE_A_POINT)GetProcAddress(g_hInstTouch,
- TEXT("TouchPanelCalibrateAPoint"));
- }
- pfnTouchPanelCalibrateAPoint(UncalX, UncalY, pCalX, pCalY);
- }
- }
-
- VOID TouchPanelDisable(VOID)
- {
- if(g_hInstTouch)
- {
- if (NULL == pfnTouchPanelDisable)
- {
- pfnTouchPanelDisable = (PFN_TOUCH_PANEL_DISABLE)GetProcAddress(g_hInstTouch,
- TEXT("TouchPanelDisable"));
- }
- pfnTouchPanelDisable();
- }
- }
-
- BOOL TouchPanelEnable(PFN_TOUCH_PANEL_CALLBACK pfnCallback)
- {
- if(g_hInstTouch)
- {
- if (NULL == pfnTouchPanelEnable)
- {
- pfnTouchPanelEnable = (PFN_TOUCH_PANEL_ENABLE)GetProcAddress(g_hInstTouch,
- TEXT("TouchPanelEnable"));
- }
- pfnOrgTouchPanelCallback = pfnCallback;
- return pfnTouchPanelEnable(hwTouchPanelCallback);
- }
- return FALSE;
- }
-
- BOOL TouchPanelGetDeviceCaps(INT iIndex,LPVOID lpOutput)
- {
- if(g_hInstTouch)
- {
- if (NULL == pfnTouchPanelGetDeviceCaps)
- {
- pfnTouchPanelGetDeviceCaps =
- (PFN_TOUCH_PANEL_GET_DEVICE_CAPS)GetProcAddress(g_hInstTouch,
- TEXT("TouchPanelGetDeviceCaps"));
- }
- return pfnTouchPanelGetDeviceCaps(iIndex ,lpOutput);
- }
- return FALSE;
- }
-
- VOID TouchPanelPowerHandler(BOOL bOff)
- {
-
- }
- VOID TouchPanelReadCalibrationAbort(void)
- {
- if(g_hInstTouch)
- {
- if (NULL == pfnTouchPanelReadCalibrationAbort)
- {
- pfnTouchPanelReadCalibrationAbort =
- (PFN_TOUCH_PANEL_READ_CALIBRATION_ABORT)GetProcAddress(g_hInstTouch,
- TEXT("TouchPanelReadCalibrationAbort"));
- }
- pfnTouchPanelReadCalibrationAbort();
- }
- }
-
- BOOL TouchPanelReadCalibrationPoint(INT* pRawX,INT* pRawY)
- {
- if(g_hInstTouch)
- {
- if (NULL == pfnTouchPanelReadCalibrationPoint)
- {
- pfnTouchPanelReadCalibrationPoint =
- (PFN_TOUCH_PANEL_READ_CALIBRATION_POINT)GetProcAddress(g_hInstTouch,
- TEXT("TouchPanelReadCalibrationPoint"));
- }
- return pfnTouchPanelReadCalibrationPoint(pRawX, pRawY);
- }
- return FALSE;
- }
-
- BOOL TouchPanelSetCalibration(INT32 cCalibrationPoints,INT32* pScreenXBuffer,
- INT32* pScreenYBuffer,INT32* pUncalXBuffer,INT32* pUncalYBuffer)
- {
- if(g_hInstTouch)
- {
- if (NULL == pfnTouchPanelSetCalibration)
- {
- pfnTouchPanelSetCalibration =
- (PFN_TOUCH_PANEL_SET_CALIBRATION)GetProcAddress(g_hInstTouch,
- TEXT("TouchPanelSetCalibration"));
- }
- return pfnTouchPanelSetCalibration(cCalibrationPoints,
- pScreenXBuffer, pScreenYBuffer,pUncalXBuffer,pUncalYBuffer);
- }
- return FALSE;
- }
-
- BOOL TouchPanelSetMode(INT iIndex,LPVOID lpInput)
- {
- if(g_hInstTouch)
- {
- if (NULL == pfnTouchPanelSetMode)
- {
- pfnTouchPanelSetMode = (PFN_TOUCH_PANEL_SET_MODE)GetProcAddress(g_hInstTouch,
- TEXT("TouchPanelSetMode"));
- }
- return pfnTouchPanelSetMode(iIndex, lpInput);
- }
- return FALSE;
- }
(jinhaijian) |