IntroMethod.cpp 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /*该文件是用作互操作的调用文件,用作其他语言(如C#)调用该模块的触摸相关功能*/
  2. #include "pch.h"
  3. #include <windows.h>
  4. #include <assert.h>
  5. #define ASSERT assert
  6. #include <stdio.h>
  7. #include <io.h>
  8. #include <fcntl.h>
  9. #include "ManipulationEventSink.h"
  10. #include "ManipulationHelper.h"
  11. namespace ManipulationHelper
  12. {
  13. /// <summary>
  14. /// 注册一个窗口(控件)具有触摸功能
  15. /// <param name="formHandle">窗口(控件)的句柄</param>
  16. /// <param name="msCallback">操作开始的回调函数</param>
  17. /// <param name="mdCallback">操作过程变化的回调函数</param>
  18. /// <param name="mcCallback">操作结束的回调函数</param>
  19. /// <return>操作帮助器</return>
  20. /// </summary>
  21. extern "C" __declspec(dllexport) ManipulationHelper* RegisterWnd(
  22. HWND formHandle,
  23. ManipulationStartedCallBack msCallback,
  24. ManipulationDeltaCallBack mdCallback,
  25. ManipulationCompletedCallBack mcCallback)
  26. {
  27. //初始化一个ManipulationHelper,并放回该实例
  28. ManipulationHelper* helper = new ManipulationHelper(formHandle);
  29. if (helper->InitOkFlag)
  30. {
  31. helper->SetManipulationStartedCallBack(msCallback);
  32. helper->SetManipulationDeltaCallBack(mdCallback);
  33. helper->SetManipulationCompletedCallBack(mcCallback);
  34. return helper;
  35. }
  36. else
  37. {
  38. delete helper;
  39. return NULL;
  40. }
  41. }
  42. /// <summary>
  43. /// 把TouchDown类型的触摸消息拿到ManipulationHelper里的IManipulationProcessor处理
  44. /// <param name="helper">触摸功能帮助器</param>
  45. /// <param name="manipulatorId">Touch消息对应的操作ID</param>
  46. /// <param name="x">Touch消息触点的X坐标(屏幕坐标系)</param>
  47. /// <param name="y">触摸功能帮助器</param>
  48. /// </summary>
  49. extern "C" __declspec(dllexport) void ProcessDown(
  50. ManipulationHelper * helper
  51. , MANIPULATOR_ID manipulatorId
  52. , FLOAT x
  53. , FLOAT y)
  54. {
  55. helper->ProcessDown(manipulatorId, x, y);
  56. }
  57. // 把TouchMove类型的触摸消息拿到ManipulationHelper里的IManipulationProcessor处理
  58. extern "C" __declspec(dllexport) void ProcessMove(
  59. ManipulationHelper * helper
  60. , MANIPULATOR_ID manipulatorId
  61. , FLOAT x
  62. , FLOAT y)
  63. {
  64. helper->ProcessMove(manipulatorId, x, y);
  65. }
  66. // 把TouchUp类型的触摸消息拿到ManipulationHelper里的IManipulationProcessor处理
  67. extern "C" __declspec(dllexport) void ProcessUp(
  68. ManipulationHelper * helper
  69. , MANIPULATOR_ID manipulatorId
  70. , FLOAT x
  71. , FLOAT y)
  72. {
  73. helper->ProcessUp(manipulatorId, x, y);
  74. }
  75. }