chktouch.c
上传用户:sdaoma
上传日期:2013-08-07
资源大小:3838k
文件大小:4k
源码类别:

GPS编程

开发平台:

C/C++

  1. /****************************************************************************
  2. * 文件名:ChkTouch.C
  3. * 功能:触摸屏校准程序。
  4. *       读取触摸屏左上角和右下角两个指定点的A/D值,保存
  5. *       到E2PROM中,以便于以后
  6. * 说明:使用MiniGUI for uC/OS-II,使用ADS 1.2编译器。
  7. ****************************************************************************/
  8. #include <stdlib.h>
  9. /* 包含MiniGUI的配置头文件(编译配置选项) */
  10. #include "MiniGUI_config.h"
  11. /* 包含MiniGUI头文件 */
  12. #include "common.h"
  13. #include "minigui.h"
  14. #include "gdi.h"
  15. #include "window.h"
  16. #include "control.h"
  17. /****************************************************************************
  18. * 名称:MyNotifProc()
  19. * 功能:编辑框控件IDC_EDIT1的回调函数。
  20. *       当编辑框接收到数据输入时(EN_CHANGE消息),就进行单位转换,然后在静
  21. *       态文本框IDC_STATIC2中显示转换结果。
  22. * 入口参数:hWnd        窗口句柄
  23. *           id          控件ID
  24. *           nc          通知码
  25. *           add_data    附加参数
  26. * 出口参数:无
  27. ****************************************************************************/
  28. static void  MyNotifProc(HWND hwnd, int id, int nc, DWORD add_data)
  29. { static char disp[50];
  30. double  len;
  31. int  d, f;
  32. if((id==IDC_EDIT1) && (nc==EN_CHANGE))
  33. { GetWindowText(hwnd, disp, 32); // 取得字符
  34. len = atof(disp); // 转换为浮点数
  35.     len = len / 25.4;
  36.     d = (int)len;
  37.     f = (int)(len * 1000) % 1000;
  38.     sprintf(disp, "相当于%d.%03d英寸", d, f);
  39.     SetDlgItemText(GetParent(hwnd), IDC_STATIC2, disp); // GetParent(hwnd)是取得父窗口句柄,即hDlg
  40. }
  41.     
  42.     if(nc == EN_ENTER)
  43.     {   PostMessage(GetParent(hwnd), MSG_COMMAND, IDOK, 0);
  44.     }
  45. }
  46. /****************************************************************************
  47. * 名称:DialogBoxProc()
  48. * 功能:对话框过程函数。
  49. *       在MSG_INITDIALOG消息中保存启动对话框时传递过来的lParam参数。
  50. *       在MSG_COMMAND消息中处理IDOK命令,将处理后的数据返回主程序(length变量)。
  51. * 入口参数:hWnd        窗口句柄
  52. *           message     消息
  53. *           wParam      消息附加参数1
  54. *           lParam      消息附加参数2
  55. * 出口参数:返回消息处理结果。
  56. ****************************************************************************/
  57. static int DialogBoxProc (HWND hDlg, int message, WPARAM wParam, LPARAM lParam)
  58. { char  disp[50];
  59. double  *length;
  60.     switch (message) 
  61. {   case MSG_INITDIALOG:
  62. SetWindowAdditionalData(hDlg, lParam); // 保存lParam参数(到窗口附加参数中)
  63.     // 即保存rcvdat指针
  64. SetNotificationCallback(GetDlgItem(hDlg, IDC_EDIT1),
  65.    MyNotifProc); // 设计控件回调函数
  66.          return(1);
  67.         
  68.      case MSG_COMMAND:
  69.          switch (LOWORD(wParam)) 
  70.          {   case IDCANCEL:
  71.              EndDialog (hDlg, wParam);
  72.              break;
  73. case IDOK:
  74. length = (double*) GetWindowAdditionalData(hDlg);
  75. GetWindowText(GetDlgItem(hDlg, IDC_EDIT1), disp, 32);
  76. *length = atof(disp);               // 保存转换结果到主程序的变量
  77. EndDialog (hDlg, wParam);
  78. break;
  79. default:
  80. break;
  81.          }
  82.          break;
  83. case MSG_CLOSE:
  84.          EndDialog (hDlg, IDCANCEL);
  85.          break;
  86. default:
  87. break;
  88.     }
  89.     
  90.     return DefaultDialogProc (hDlg, message, wParam, lParam);
  91. }
  92. /****************************************************************************
  93. * 名称:InitDialogBox()
  94. * 功能:初始化对话框,然后启动对话框。 
  95. * 入口参数:hWnd        父窗口句柄
  96. * 出口参数:无
  97. ****************************************************************************/
  98. static void InitDialogBox(HWND hWnd, double *rcvdat)
  99. {
  100.     MyDlgTEMP.controls = MyCtrlData;
  101.     
  102.     DialogBoxIndirectParam(&MyDlgTEMP, hWnd, DialogBoxProc, (LPARAM)rcvdat);
  103. }
  104. /****************************************************************************
  105. * 名称:MiniGUIMain()
  106. * 功能:MiniGUI程序入口点。
  107. * 入口参数:argc    参数个数
  108. *           argv    参数字符串指针
  109. * 出口参数:返回0。
  110. ****************************************************************************/
  111. int  MiniGUIMain(int argc, const char *argv[])
  112. {   double  length = 0.0;
  113. /* 虽然MiniGUI for uC/OS-II不支持"MiniGUI-Lite模式",
  114.    但为了保持代码的移植性,此段不要删除 
  115. */
  116. #ifdef _LITE_VERSION
  117.     SetDesktopRect(0,0, 800,600);
  118. #endif
  119.     InitDialogBox(HWND_DESKTOP, &length);
  120.     return(0);
  121. }
  122. /* 定义桌面接口函数 */
  123. #ifndef _LITE_VERSION
  124. #include "dti.c"
  125. #endif