⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chktouch.c

📁 uC/OS系统移植综合实验程序
💻 C
字号:
/****************************************************************************
* 文件名:ChkTouch.C
* 功能:触摸屏校准程序。
*       读取触摸屏左上角和右下角两个指定点的A/D值,保存
*       到E2PROM中,以便于以后
* 说明:使用MiniGUI for uC/OS-II,使用ADS 1.2编译器。
****************************************************************************/
#include <stdlib.h>

/* 包含MiniGUI的配置头文件(编译配置选项) */
#include "MiniGUI_config.h"

/* 包含MiniGUI头文件 */
#include "common.h"
#include "minigui.h"
#include "gdi.h"
#include "window.h"
#include "control.h"


/****************************************************************************
* 名称:MyNotifProc()
* 功能:编辑框控件IDC_EDIT1的回调函数。
*       当编辑框接收到数据输入时(EN_CHANGE消息),就进行单位转换,然后在静
*       态文本框IDC_STATIC2中显示转换结果。
* 入口参数:hWnd        窗口句柄
*           id          控件ID
*           nc          通知码
*           add_data    附加参数
* 出口参数:无
****************************************************************************/
static void  MyNotifProc(HWND hwnd, int id, int nc, DWORD add_data)
{	static char disp[50];
	double  len;
	int  d, f;

	if((id==IDC_EDIT1) && (nc==EN_CHANGE))
	{	GetWindowText(hwnd, disp, 32);		// 取得字符
		len = atof(disp);					// 转换为浮点数
	    len = len / 25.4;
	    d = (int)len;
	    f = (int)(len * 1000) % 1000;

	    sprintf(disp, "相当于%d.%03d英寸", d, f);
	    SetDlgItemText(GetParent(hwnd), IDC_STATIC2, disp);	// GetParent(hwnd)是取得父窗口句柄,即hDlg
	}
    
    if(nc == EN_ENTER)
    {   PostMessage(GetParent(hwnd), MSG_COMMAND, IDOK, 0);
    }
}


/****************************************************************************
* 名称:DialogBoxProc()
* 功能:对话框过程函数。
*       在MSG_INITDIALOG消息中保存启动对话框时传递过来的lParam参数。
*       在MSG_COMMAND消息中处理IDOK命令,将处理后的数据返回主程序(length变量)。
* 入口参数:hWnd        窗口句柄
*           message     消息
*           wParam      消息附加参数1
*           lParam      消息附加参数2
* 出口参数:返回消息处理结果。
****************************************************************************/
static int DialogBoxProc (HWND hDlg, int message, WPARAM wParam, LPARAM lParam)
{	char  disp[50];
	double  *length;

    switch (message) 
	{   case MSG_INITDIALOG:
			SetWindowAdditionalData(hDlg, lParam);		// 保存lParam参数(到窗口附加参数中)
													    // 即保存rcvdat指针
			SetNotificationCallback(GetDlgItem(hDlg, IDC_EDIT1),
							   MyNotifProc);			// 设计控件回调函数
        	return(1);
        
    	case MSG_COMMAND:
        	switch (LOWORD(wParam)) 
        	{   case IDCANCEL:
            		EndDialog (hDlg, wParam);
            		break;

				case IDOK:
					length = (double*) GetWindowAdditionalData(hDlg);
					GetWindowText(GetDlgItem(hDlg, IDC_EDIT1), disp, 32);
					*length = atof(disp);               // 保存转换结果到主程序的变量
					EndDialog (hDlg, wParam);
					break;

				default:
					break;
        	}
        	break;

		case MSG_CLOSE:
        	EndDialog (hDlg, IDCANCEL);
        	break;
	
		default:
			break;	
    }
    
    return DefaultDialogProc (hDlg, message, wParam, lParam);
}


/****************************************************************************
* 名称:InitDialogBox()
* 功能:初始化对话框,然后启动对话框。 
* 入口参数:hWnd        父窗口句柄
* 出口参数:无
****************************************************************************/
static void InitDialogBox(HWND hWnd, double *rcvdat)
{
    MyDlgTEMP.controls = MyCtrlData;
    
    DialogBoxIndirectParam(&MyDlgTEMP, hWnd, DialogBoxProc, (LPARAM)rcvdat);
}


/****************************************************************************
* 名称:MiniGUIMain()
* 功能:MiniGUI程序入口点。
* 入口参数:argc    参数个数
*           argv    参数字符串指针
* 出口参数:返回0。
****************************************************************************/
int  MiniGUIMain(int argc, const char *argv[])
{   double  length = 0.0;

/* 虽然MiniGUI for uC/OS-II不支持"MiniGUI-Lite模式",
   但为了保持代码的移植性,此段不要删除 
*/
#ifdef _LITE_VERSION
    SetDesktopRect(0,0, 800,600);
#endif

    InitDialogBox(HWND_DESKTOP, &length);

    return(0);
}

/* 定义桌面接口函数 */
#ifndef _LITE_VERSION
		#include "dti.c"
#endif

⌨️ 快捷键说明

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