關於ATM第二個界面是插入卡的界面,第三個界面是輸入密碼的界面。
例如:
上面的提示語可以在WM_PAINT消息裏面繪製。
case WM_PAINT:
GUI_SetFont(&GBK_16m16);
GUI_SetColor(GUI_BLUE);
GUI_DispStringAt("請輸入您的密碼:", 280, 150);
break;
至於按鈕只要中文顯示,就不需要回調函數了,在初始消息裏面寫就好了。
case WM_INIT_DIALOG:
// Initialization of 'Framewin'
hItem = pMsg->hWin;
FRAMEWIN_SetFont(hItem, &GBK_16m16);
FRAMEWIN_SetText(hItem, "自助取款機");
FRAMEWIN_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
對於從頁面二轉到頁面三,在按鈕裏將頁面二關閉,創建頁面三
Id = WM_GetId(pMsg->hWinSrc);
WM_DeleteWindow(pMsg->hWin);
CreateFramewin3();
按鈕輸入數字並實時顯示在edit小工具裏面,因爲密碼爲6位,輸入超過6位數,輸入按鈕將不再有效。所以需要一個位數標誌。每個按鈕按一下即繪製edit小工具一遍,這樣可以做到實時顯示。
if (display == 6)
break;
else
{
display += 1;
password = (password * 10) + 1;
hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_0);
EDIT_SetFont(hItem, GUI_FONT_20_1);
EDIT_SetDecMode(hItem, password, 0, 999999, 0, 0);
break;
}
按下刪除鍵的話,一位一位刪除,
if (display)
{
display--;
password = password / 10;
hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_0);
EDIT_SetFont(hItem, GUI_FONT_20_1);
EDIT_SetDecMode(hItem, password, 0, 999999, 0, 0);
break;
}
這樣,基本上就實現第二頁和第三頁的控件設計。