사용자 도구

사이트 도구

English

ct1820:sample_6_다중화면_이동메뉴:index

SAMPLE 6: 다중화면 이동 메뉴 구현

일반적으로 하나의 어플리케이션에는 여러 개의 화면이 있고, 그 화면을 자주 이동해야 될일이 있습니다. 즉 다중 화면이동 메뉴구현이 필요합니다. 이를 구현하기 위한 기본적인 구조를 샘플 프로그램으로 만들어 보았습니다.

아래 소스를 ctrl+C 로 카피한뒤 CUBLOC Studio 에 ctrl+V 로 붙여넣기해서 테스트해보실 수 있습니다.

#include "CT18XX"
Ramclear
Ct18contrast 150 
On Pad Gosub ProcessTouch
Dim TX1 As Integer
Dim TY1 As Integer
Dim CurrentScreen As Byte
#define _MAINMENU 0
#define _SUBMENU1 1
#define _SUBMENU2 2
#define _SUBMENU3 3
#define _SUBMENU4 4
MAIN
CurrentScreen = _MAINMENU
 
Do
 If CurrentScreen = _MAINMENU Then
    Set Onpad Off
    DisplayTime
    Set Onpad On
 Endif
 Delay 250
Loop
 
ProcessTouch:
 TX1 = Sys(10)
 TY1 = Sys(11)
 Select Case CurrentScreen
 Case _MAINMENU
    ProcessMainMenu
 Case _SUBMENU1
    ProcessSubMenu1
 Case _SUBMENU2
    ProcessSubMenu2
 Case _SUBMENU3
    ProcessSubMenu3
 Case _SUBMENU4
    ProcessSubMenu4
 End Select
Return
 
End
 
Sub ProcessMainMenu()
 If Menucheck(0,TX1,TY1) = 1 Then
    FlashMenu 0
    CurrentScreen = _SUBMENU1
    Cls
    SUBMENU1 
 Elseif Menucheck(1,TX1,TY1) = 1 Then
    FlashMenu 1
    CurrentScreen = _SUBMENU2
    Cls
    SUBMENU2
 Elseif Menucheck(2,TX1,TY1) = 1 Then
    FlashMenu 2
    CurrentScreen = _SUBMENU3
    Cls   
    SUBMENU3
 Elseif Menucheck(3,TX1,TY1) = 1 Then
    FlashMenu 3
    CurrentScreen = _SUBMENU4
    Cls
    SUBMENU4
Endif
End Sub
 
Sub ProcessSubMenu1()
    If Menucheck(0,TX1,TY1) = 1 Then
       FlashMenu 0
       Beeper 1
    Elseif Menucheck(1,TX1,TY1) = 1 Then
       FlashMenu 1
       CurrentScreen = _MAINMENU
       Cls
       MAIN
    Endif
End Sub
 
Sub ProcessSubMenu2()
    If Menucheck(0,TX1,TY1) = 1 Then
       FlashMenu 0
       Beeper 2
    Elseif Menucheck(1,TX1,TY1) = 1 Then
       FlashMenu 1
       CurrentScreen = _MAINMENU
       Cls
       MAIN
    Endif
End Sub
 
Sub ProcessSubMenu3()
    If Menucheck(0,TX1,TY1) = 1 Then
       FlashMenu 0
       Beeper 3
    Elseif Menucheck(1,TX1,TY1) = 1 Then
       FlashMenu 1
       CurrentScreen = _MAINMENU 
       Cls
       MAIN
    Endif
End Sub
 
Sub ProcessSubMenu4()
    If Menucheck(0,TX1,TY1) = 1 Then
       FlashMenu 0
       Beeper 4
    Elseif Menucheck(1,TX1,TY1) = 1 Then
       FlashMenu 1
       CurrentScreen = _MAINMENU
       Cls
       MAIN
    Endif
End Sub
 
Sub Beeper(Num As Byte)
    Dim i As Byte
    For i = 1 To Num
       CT18beep 20
       Wait 200
    Next
End Sub
 
Sub FlashMenu(Num As Byte)
    Menureverse Num
    Delay 150
    Menureverse Num
End Sub
 
Sub DisplayTime()
    Glocate 16,220
    Font 0,0
    Dprint Dp(Bcd2bin(Rtcread(2)),2,1),_
       ":",Dp(Bcd2bin(Rtcread(1)),2,1), _
       ":",Dp(Bcd2bin(Rtcread(0)),2,1)
End Sub
 
Sub MAIN()
    Font 6,1
    Style 0,0,0
    Glocate 96,24
    Gprint "Main Menu"
    Font 0,1
    Menuset 0,2,40,96,144,128
    Menutitle 0,20,8,"Submenu 1"
    Menuset 1,2,168,96,280,128
    Menutitle 1,24,8,"Submenu 2"
    Menuset 2,2,40,152,144,184 
    Menutitle 2,20,8,"Submenu 3"
    Menuset 3,2,168,152,280,184
    Menutitle 3,24,8,"Submenu 4"
    Linestyle 0
    Dotsize 0,0
    Color 1
    Box 80,16,232,56
    Font 4,0
End Sub
 
Sub SUBMENU1()
    Font 6,1
    Style 0,0,0
    Glocate 96,24
    Gprint "Submenu 1"
    Linestyle 0
    Dotsize 0,0
    Color 1
    Box 80,16,232,56
    Font 2,1
    Menuset 0,2,88,88,224,120
    Menutitle 0,22,8,"Beep 1 time"
    Menuset 1,2,0,208,72,239
    Menutitle 1,10,7,"<BACK"
    Font 4,0
End Sub
 
Sub SUBMENU2()
    Font 6,1
    Style 0,0,0
    Glocate 96,24
    Gprint "Submenu 2"
    Linestyle 0
    Dotsize 0,0
    Color 1
    Box 80,16,232,56
    Font 2,1
    Menuset 0,2,88,88,224,120
    Menutitle 0,16,8,"Beep 2 times"
    Menuset 1,2,0,208,72,239
    Menutitle 1,10,7,"<BACK"
    Font 4,0
End Sub
 
Sub SUBMENU3()
    Font 6,1
    Style 0,0,0
    Glocate 96,24
    Gprint "Submenu 3"
    Linestyle 0
    Dotsize 0,0
    Color 1 
    Box 80,16,232,56
    Font 2,1
    Menuset 0,2,88,88,224,120
    Menutitle 0,16,8,"Beep 3 times"
    Menuset 1,2,0,208,72,239
    Menutitle 1,10,7,"<BACK"
    Font 4,0
End Sub
 
Sub SUBMENU4()
    Font 6,1
    Style 0,0,0
    Glocate 96,24
    Gprint "Submenu 4"
    Linestyle 0
    Dotsize 0,0
    Color 1
    Box 80,16,232,56
    Font 2,1
    Menuset 0,2,88,88,224,120
    Menutitle 0,16,8,"Beep 4 times"
    Menuset 1,2,0,208,72,239
    Menutitle 1,10,7,"<BACK"
    Font 4,0
End Sub

소스를 보면 CurrentScreen 이라는 전역변수가 큰 역할을 수행합니다. 이 변수는 현재 화면에 표시된 스크린번 호를 저장하고 있습니다. 이 변수에 저장된 값을 참조하면, 현재 어떤 화면이 표시중인지 알수 있습니다.

터치 인터럽트 처리 루틴을 보면 CurrentScreen 의 값을 참조하여, 어떤 처리루틴으로 갈지 분류를 해줍니다. 이 것만 이해하시면, 전체적인 흐름을 파악하실 수 있으실 것입니다.

ct1820/sample_6_다중화면_이동메뉴/index.txt · 마지막으로 수정됨: 2016/04/21 14:02 저자 Comfile Technology