touchcalibrate.cpp

来自「This is a Windows CE 6.0 Board Support P」· C++ 代码 · 共 93 行

CPP
93
字号
///---------------------------------------------------------------------------------
// Copyright (c) David Vescovi.  All rights reserved.
//
// TouchCalibrate - Stand alone touch screen calibrate.
//---------------------------------------------------------------------------------

#include <Windows.h>

#define TOUCHSCREEN_ENTRY_KEY _T("HARDWARE\\DEVICEMAP\\TOUCH")

extern "C" BOOL WINAPI TouchCalibrate(void);

// Detect calibration data
BOOL CalibrationOK()
{
    HKEY hKey;
    DWORD dwStatus;


    // Try to open touchscreen calibration keys
    dwStatus = RegOpenKeyEx(
                HKEY_LOCAL_MACHINE,
                TOUCHSCREEN_ENTRY_KEY,
                0,
                0,
                &hKey);
                
    if (dwStatus != ERROR_SUCCESS) {   	
        return FALSE;
    }


	// Try to get calibration data
	dwStatus = RegQueryValueEx(hKey,_T("CalibrationData"),NULL,NULL,NULL,NULL);

    // Close opened keys
	RegCloseKey(hKey);

//	return (dwStatus == ERROR_SUCCESS);		// only calibrate if no calib data in registry
	return (FALSE);							// force a calibration always
}   

//------------------------------------------------------------------------------

// Flush calibration data to storage
BOOL FlushCalibrationData ()
{
  HKEY hKey;
  DWORD dwStatus;
  
  dwStatus = RegOpenKeyEx (HKEY_LOCAL_MACHINE, 
                     TOUCHSCREEN_ENTRY_KEY,
                     0,
                     0,
                     &hKey);
                     
  if (dwStatus == ERROR_SUCCESS)
  {
    // Flush new calibration data
    RegFlushKey(hKey);
  
    // Close opened keys
    RegCloseKey(hKey);
       
  }
  
  return (dwStatus == ERROR_SUCCESS);
}

//------------------------------------------------------------------------------

int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPTSTR    lpCmdLine,
                   int       nCmdShow)
{
	BOOL errcode;

	if (!CalibrationOK())	
	{
		errcode=TouchCalibrate();
        if (errcode == TRUE)
        {
            FlushCalibrationData ();
        }
	}


	return 0;
}


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?