?? calibration.c
字號:
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* 礐/GUI is protected by international copyright laws. Knowledge of the
* source code may not be used to write a similar product. This file may
* only be used in accordance with a license and should not be redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : Calibration.c
Purpose : TBD
---------------------------END-OF-HEADER------------------------------
*/
#include <stddef.h>
#include "GUI.h"
#include "DIALOG.h"
#include "Main.h"
/*********************************************************************
*
* Defines
*
**********************************************************************
*/
/*********************************************************************
*
* Dialog IDs
*/
#define ID_FRAMEWIN 1
/*********************************************************************
*
* Static data
*
**********************************************************************
*/
static char _IsInited;
static WM_HWIN _hDlg;
static WM_HWIN _hPrevWin;
static int _aSlider[4];
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
{ FRAMEWIN_CreateIndirect, "Calibration", ID_FRAMEWIN, 0, 480, 320, 240, 0},
{ TEXT_CreateIndirect, "Horizontal min:",0, 20, 40, 70, 20, TEXT_CF_LEFT | TEXT_CF_VCENTER },
{ TEXT_CreateIndirect, "Horizontal max:",0, 20, 70, 70, 20, TEXT_CF_LEFT | TEXT_CF_VCENTER },
{ TEXT_CreateIndirect, "Vertical min:",0, 20, 100, 70, 20, TEXT_CF_LEFT | TEXT_CF_VCENTER },
{ TEXT_CreateIndirect, "Vertical max:",0, 20, 130, 70, 20, TEXT_CF_LEFT | TEXT_CF_VCENTER },
{ SLIDER_CreateIndirect, NULL, GUI_ID_SLIDER0, 100, 40, 100, 20 },
{ SLIDER_CreateIndirect, NULL, GUI_ID_SLIDER1, 100, 70, 100, 20 },
{ SLIDER_CreateIndirect, NULL, GUI_ID_SLIDER2, 100, 100, 100, 20 },
{ SLIDER_CreateIndirect, NULL, GUI_ID_SLIDER3, 100, 130, 100, 20 },
{ EDIT_CreateIndirect, NULL , GUI_ID_EDIT0, 210, 40, 60, 20, 0, 0},
{ EDIT_CreateIndirect, NULL , GUI_ID_EDIT1, 210, 70, 60, 20, 0, 0},
{ EDIT_CreateIndirect, NULL , GUI_ID_EDIT2, 210, 100, 60, 20, 0, 0},
{ EDIT_CreateIndirect, NULL , GUI_ID_EDIT3, 210, 130, 60, 20, 0, 0},
{ BUTTON_CreateIndirect, "OK", GUI_ID_OK, 230, 180, 60, 20 },
};
/*********************************************************************
*
* Static code
*
**********************************************************************
*/
/*********************************************************************
*
* _OnValueChanged
*/
static void _OnValueChanged(WM_HWIN hDlg, int Id) {
unsigned Index, v;
WM_HWIN hItem;
if ((Id >= GUI_ID_SLIDER0) && (Id <= GUI_ID_SLIDER3)) {
Index = Id - GUI_ID_SLIDER0;
/* SLIDER-widget has changed, update EDIT-widget */
hItem = WM_GetDialogItem(hDlg, GUI_ID_SLIDER0 + Index);
v = SLIDER_GetValue(hItem);
hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT0 + Index);
EDIT_SetValue(hItem, v);
_aSlider[Index] = v;
}
}
/*********************************************************************
*
* _cbCallback
*/
static void _cbCallback(WM_MESSAGE * pMsg) {
WM_HWIN hDlg, hWinSrc, hItem;
int Id, NCode, i;
hWinSrc = pMsg->hWinSrc;
hDlg = pMsg->hWin;
switch (pMsg->MsgId) {
case WM_INIT_DIALOG:
WM_MakeModal(hDlg);
FRAMEWIN_SetFont(hDlg, &GUI_Font24B_ASCII);
FRAMEWIN_SetTextAlign(hDlg, GUI_TA_HCENTER);
FRAMEWIN_SetClientColor(hDlg, GUI_YELLOW);
for (i = 0; i < 4; i++) {
hItem = WM_GetDialogItem(hDlg, GUI_ID_SLIDER0 + i);
SLIDER_SetRange(hItem, 0, 999);
SLIDER_SetValue(hItem, _aSlider[i]);
hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT0 + i);
EDIT_SetDecMode(hItem, _aSlider[i], 0, 999, 0, 0);
WM_DisableWindow(hItem);
}
break;
case WM_NOTIFY_PARENT:
Id = WM_GetId(hWinSrc); /* Id of widget */
NCode = pMsg->Data.v; /* Notification code */
if (NCode == WM_NOTIFICATION_RELEASED) { /* React only if released */
if (Id == GUI_ID_OK) { /* OK Button */
GUI_EndDialog(hDlg, 0);
WM_SetFocus(_hPrevWin);
}
}
if (NCode == WM_NOTIFICATION_VALUE_CHANGED) {
_OnValueChanged(hDlg, Id);
}
break;
default:
WM_DefaultProc(pMsg);
}
}
/*********************************************************************
*
* Public code
*
**********************************************************************
*/
/*********************************************************************
*
* ExecCalibration
*/
void ExecCalibration(void) {
_hPrevWin = WM_GetFocussedWindow();
GUI_SetOrg(0, 480);
TEXT_SetDefaultTextColor(GUI_BLACK);
GUI_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);
GUI_SetOrg(0, 0);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -