📄 cashterminal.c
字号:
static void _cbSelectMoney(WM_MESSAGE* pMsg);
static void _cbEnterAmount(WM_MESSAGE* pMsg) {
char acBuffer[5] = {0};
char * pBuffer;
WM_HWIN hItem, hWin = pMsg->hWin;
switch (pMsg->MsgId) {
case WM_CREATE:
WM_SetFocus(hWin);
_CreateNumPad(hWin, FRAME_WIDTH >> 1, 305);
hItem = EDIT_CreateEx((FRAME_WIDTH >> 1) - 50, 110, 100, 37, hWin, WM_CF_SHOW, 0, GUI_ID_EDIT0, 4);
EDIT_SetFont(hItem, &GUI_FontAA2_32);
EDIT_SetTextAlign(hItem, GUI_TA_CENTER);
WIDGET_SetEffect(hItem, DEFAULT_WIDGET_EFFECT);
WM_DisableWindow(hItem);
break;
case WM_PAINT:
_PaintFrame();
GUI_DispStringHCenterAt(_GetLang(TEXT_ID_BETRAG_EINGEBEN), FRAME_WIDTH >> 1, 15);/**/
break;
case MSG_PIN_ERROR:
if (!_PIN_Digits) {
break;
}
case MSG_PIN_OK:
_DeleteNumPad();
_DeleteFrame();
_CreateFrame(&_cbWait);
break;
case MSG_PIN_CANCEL:
_DeleteNumPad();
_DeleteFrame();
_CreateFrame(&_cbSelectMoney);
break;
case MSG_PIN_CHANGED:
pBuffer = acBuffer;
GUI_AddDec(_PIN_Value, _PIN_Digits, &pBuffer);
EDIT_SetText(WM_GetDialogItem(hWin, GUI_ID_EDIT0), acBuffer);
break;
default:
WM_DefaultProc(pMsg);
}
}
/*********************************************************************
*
* _cbSelectMoney
*/
static void _cbSelectMoney(WM_MESSAGE* pMsg) {
WM_HWIN hWin = pMsg->hWin;
switch (pMsg->MsgId) {
case WM_CREATE:
WM_SetFocus(hWin);
_CreateButton(hWin, "50,00 EUR", GUI_ID_BUTTON0, 25, 84, 270, 60, 0);
_CreateButton(hWin, "100,00 EUR", GUI_ID_BUTTON1, 25, 162, 270, 60, 0);
_CreateButton(hWin, "150,00 EUR", GUI_ID_BUTTON2, 25, 240, 270, 60, 0);
_CreateButton(hWin, "200,00 EUR", GUI_ID_BUTTON3, 25, 318, 270, 60, 0);
_CreateButton(hWin, "250,00 EUR", GUI_ID_BUTTON4, 320, 84, 270, 60, 0);
_CreateButton(hWin, "300,00 EUR", GUI_ID_BUTTON5, 320, 162, 270, 60, 0);
_CreateButton(hWin, "350,00 EUR", GUI_ID_BUTTON6, 320, 240, 270, 60, 0);
_CreateButton(hWin, "", GUI_ID_BUTTON7, 320, 318, 270, 60, TEXT_ID_ANDERER_BETRAG);
break;
case WM_PAINT:
_PaintFrame();
GUI_DispStringHCenterAt(_GetLang(TEXT_ID_AUSWAHL_BETRAG), FRAME_WIDTH >> 1, 15);
break;
case WM_NOTIFY_PARENT:
if (pMsg->Data.v == WM_NOTIFICATION_RELEASED) {
int Id = WM_GetId(pMsg->hWinSrc);
switch (Id) {
case GUI_ID_BUTTON7:
_DeleteFrame();
_CreateFrame(&_cbEnterAmount);
break;
default:
_DeleteFrame();
_CreateFrame(&_cbWait);
break;
}
}
break;
/*
case WM_NOTIFY_PARENT:
if (pMsg->Data.v == WM_NOTIFICATION_RELEASED) {
_DeleteFrame();
_CreateFrame(&_cbWait);
}
break;
*/
default:
WM_DefaultProc(pMsg);
}
}
/*********************************************************************
*
* _cbShowBalance
*/
static void _cbShowBalance(WM_MESSAGE* pMsg) {
WM_HWIN hWin = pMsg->hWin;
switch (pMsg->MsgId) {
case WM_CREATE:
WM_SetFocus(hWin);
break;
case WM_PAINT:
_PaintFrame();
GUI_DispStringHCenterAt(_GetLang(TEXT_ID_KONTOSTAND), FRAME_WIDTH >> 1, 125);
break;
case WM_TOUCH:
if (((GUI_PID_STATE *)pMsg->Data.p)->Pressed == 1) {
_DeleteFrame();
_CreateFrame(&_cbThanks);
}
break;
default:
WM_DefaultProc(pMsg);
}
}
/*********************************************************************
*
* _cbMainMenu
*/
static void _cbMainMenu(WM_MESSAGE* pMsg) {
WM_HWIN hWin = pMsg->hWin;
switch (pMsg->MsgId) {
case WM_CREATE:
WM_SetFocus(hWin);
_CreateButton(hWin, "", GUI_ID_BUTTON0, (FRAME_WIDTH >> 1) - 175, 162, 350, 60, TEXT_ID_GELD_ABHEBEN);
_CreateButton(hWin, "", GUI_ID_BUTTON1, (FRAME_WIDTH >> 1) - 175, 240, 350, 60, TEXT_ID_KONTOSTAND_ANSEHEN);
break;
case WM_PAINT:
_PaintFrame();
GUI_DispStringHCenterAt(_GetLang(TEXT_ID_AUSWAHL_TREFFEN), FRAME_WIDTH >> 1, 15);
break;
case WM_NOTIFY_PARENT:
if (pMsg->Data.v == WM_NOTIFICATION_RELEASED) {
int Id = WM_GetId(pMsg->hWinSrc);
switch (Id) {
case GUI_ID_BUTTON0:
_DeleteFrame();
_CreateFrame(&_cbSelectMoney);
break;
case GUI_ID_BUTTON1:
_DeleteFrame();
_CreateFrame(&_cbShowBalance);
break;
}
}
break;
default:
WM_DefaultProc(pMsg);
}
}
/*********************************************************************
*
* _cbEnterPIN
*/
static void _cbInsertCard(WM_MESSAGE* pMsg);
static void _cbEnterPIN(WM_MESSAGE* pMsg) {
WM_HWIN hItem, hWin = pMsg->hWin;
static int PinError;
switch (pMsg->MsgId) {
case WM_CREATE:
PinError = 0;
WM_SetFocus(hWin);
_CreateNumPad(hWin, FRAME_WIDTH >> 1, 305);
hItem = EDIT_CreateEx((FRAME_WIDTH >> 1) - 50, 110, 100, 37, hWin, WM_CF_SHOW, 0, GUI_ID_EDIT0, 4);
EDIT_SetFont(hItem, &GUI_FontAA2_32);
EDIT_SetTextAlign(hItem, GUI_TA_CENTER);
WIDGET_SetEffect(hItem, DEFAULT_WIDGET_EFFECT);
WM_DisableWindow(hItem);
break;
case WM_PAINT:
_PaintFrame();
GUI_DispStringHCenterAt(_GetLang(TEXT_ID_PIN_EINGEBEN), FRAME_WIDTH >> 1, 15);
if (PinError) {
_PIN_Digits = 0;
GUI_SetColor(GUI_RED);
GUI_DispStringHCenterAt(_GetLang(TEXT_ID_FALSCHE_PIN), FRAME_WIDTH >> 1, 165);
WM_CreateTimer(hWin, 0, 1000, 0);
}
break;
case WM_TIMER:
PinError = 0;
EDIT_SetText(WM_GetDialogItem(hWin, GUI_ID_EDIT0), "");
WM_InvalidateWindow(hWin);
break;
case MSG_PIN_ERROR:
PinError++;
WM_InvalidateWindow(hWin);
break;
case MSG_PIN_OK:
_DeleteNumPad();
_DeleteFrame();
_CreateFrame(&_cbMainMenu);
break;
case MSG_PIN_CANCEL:
_DeleteNumPad();
_DeleteFrame();
_CreateFrame(&_cbInsertCard);
break;
case MSG_PIN_CHANGED:
if (_PIN_Digits == 0) {
EDIT_SetText(WM_GetDialogItem(hWin, GUI_ID_EDIT0), "");
} else if (_PIN_Digits == 1) {
EDIT_SetText(WM_GetDialogItem(hWin, GUI_ID_EDIT0), "x");
} else if (_PIN_Digits == 2) {
EDIT_SetText(WM_GetDialogItem(hWin, GUI_ID_EDIT0), "xx");
} else if (_PIN_Digits == 3) {
EDIT_SetText(WM_GetDialogItem(hWin, GUI_ID_EDIT0), "xxx");
} else if (_PIN_Digits == 4) {
EDIT_SetText(WM_GetDialogItem(hWin, GUI_ID_EDIT0), "xxxx");
}
break;
default:
WM_DefaultProc(pMsg);
}
}
/*********************************************************************
*
* _cbInsertCard
*/
static void _cbInsertCard(WM_MESSAGE* pMsg) {
WM_HWIN hWin = pMsg->hWin;
switch (pMsg->MsgId) {
case WM_CREATE:
WM_SetFocus(hWin);
break;
case WM_PAINT:
_PaintFrame();
_DrawLogoBox(0, &bmLogo_ECCard);
_DrawLogoBox(1, &bmLogo_Maestro);
_DrawLogoBox(2, &bmLogo_MasterCard);
_DrawLogoBox(3, &bmLogo_VisaCard);
_DrawLogoBox(4, &bmLogo_AmericanExpress);
GUI_DispStringHCenterAt(_GetLang(TEXT_ID_KARTE_EINFUEHREN), FRAME_WIDTH >> 1, 15);
break;
case WM_TOUCH:
if (((GUI_PID_STATE *)pMsg->Data.p)->Pressed == 1) {
_DeleteFrame();
_CreateFrame(&_cbEnterPIN);
}
break;
default:
WM_DefaultProc(pMsg);
}
}
/*********************************************************************
*
* _cbLanguage
*/
static void _cbLanguage(WM_MESSAGE* pMsg) {
WM_HWIN hWin = pMsg->hWin;
switch (pMsg->MsgId) {
case WM_CREATE:
WM_SetFocus(hWin);
_CreateButton(hWin, "Deutsch", GUI_ID_BUTTON0, (FRAME_WIDTH >> 1) - 175, 162, 350, 60, 0);
_CreateButton(hWin, "English", GUI_ID_BUTTON1, (FRAME_WIDTH >> 1) - 175, 240, 350, 60, 0);
break;
case WM_PAINT:
_PaintFrame();
GUI_DispStringHCenterAt("Please select your language", FRAME_WIDTH >> 1, 15);
break;
case WM_NOTIFY_PARENT:
if (pMsg->Data.v == WM_NOTIFICATION_RELEASED) {
int Id = WM_GetId(pMsg->hWinSrc);
switch (Id) {
case GUI_ID_BUTTON0:
_Language = 0;
break;
case GUI_ID_BUTTON1:
_Language = 1;
break;
}
_hTitle = TEXT_CreateEx(160, 17, 300, 32, WM_HBKWIN, WM_CF_SHOW, 0, GUI_ID_TEXT0, _GetLang(TEXT_ID_GELDAUTOMAT));
TEXT_SetTextAlign(_hTitle, GUI_TA_HCENTER);
TEXT_SetFont(_hTitle, MAIN_FONT);
_DeleteFrame();
_CreateFrame(&_cbInsertCard);
}
break;
default:
WM_DefaultProc(pMsg);
}
}
/*********************************************************************
*
* _ClearState
*/
static void _ClearState(void) {
GUI_PID_STATE State = {0};
GUI_PID_StoreState(&State);
}
/*********************************************************************
*
* Public code
*
**********************************************************************
*/
/*********************************************************************
*
* MainTask
*/
int AppCashTerminal(void);
int AppCashTerminal(void) {
int tNow;
int tEnd;
int tNextTouchEvent;
int iTouchEvent;
int Automode;
_Break = 0;
WM_SetCreateFlags(WM_CF_MEMDEV);
WM_SetCallback(WM_HBKWIN, &_cbBkWindow);
_CreateFrame(&_cbLanguage);
WM_Exec();
iTouchEvent = 0;
Automode = 1;
tNextTouchEvent = GUI_GetTime() + 2000;
_ClearState();
do {
GUI_PID_STATE CurrentState;
GUI_PID_GetState(&CurrentState);
tNow = GUI_GetTime();
if (Automode) {
tEnd = tNow + 10000;
if ((CurrentState.Pressed) && ((CurrentState.x != _aPID_Events[iTouchEvent].x) || (CurrentState.y != _aPID_Events[iTouchEvent].y))) {
Automode = 0;
} else {
if (tNow >= tNextTouchEvent) {
GUI_PID_STATE State = {0};
State.x = _aPID_Events[iTouchEvent].x;
State.y = _aPID_Events[iTouchEvent].y;
State.Pressed = _aPID_Events[iTouchEvent].Pressed;
tNextTouchEvent = tNow + _aPID_Events[iTouchEvent].Duration;
GUI_PID_StoreState(&State);
iTouchEvent++;
if (iTouchEvent >= GUI_COUNTOF(_aPID_Events)) {
_Break = 1;
}
}
}
} else {
GUI_PID_STATE OldState;
if (memcmp(&OldState, &CurrentState, sizeof(GUI_PID_STATE)) != 0) {
tEnd = tNow + 10000;
}
OldState = CurrentState;
}
GUI_Delay(10);
} while (!_Break && (tNow < tEnd));
_DeleteFrame();
WM_SetCallback(WM_HBKWIN, NULL);
WM_DeleteWindow(_hTitle);
return _Break;
}
/*************************** End of file ****************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -