home *** CD-ROM | disk | FTP | other *** search
- PRINT
- PRINT
- PRINT TAB(5),"This demo shows how you can set up your own screen."
- PRINT
- PRINT TAB(5),"It utilizes the fact that the standard Comal window"
- PRINT TAB(5),"is opened after the scanning where all local modules"
- PRINT TAB(5),"are initialized."
- PRINT
- PRINT TAB(5),"You cannot make it as an external module!"
- PRINT TAB(5),"This is because external modules are only initialized"
- PRINT TAB(5),"once - when they are loaded."
- PRINT
- PRINT
- PRINT TAB(5),"Press any key to stop"
-
- WHILE KEY$="" DO WAIT
-
- MODULE SpecialScreen
-
- USE System
- USE SystemCode
- USE IntuitionScreen
- USE View
- USE TagItem
- USE IntuitionLibrary
-
- DIM Screen OF POINTER TO Screen
- DIM IOScreen OF POINTER TO Screen
-
- CreateScreen
-
- PROC CreateScreen
- LOCAL NewScreen OF NewScreen
-
- NewScreen.Width:=640
- NewScreen.Height:=256
- NewScreen.Depth:=2
- NewScreen.BlockPen:=1
- NewScreen.ViewModes:=HIRES
- NewScreen.Type:=$000F // CUSTOMSCREEN
- NewScreen.DefaultTitle:=ADR("Special!")
-
- IF SysLibVersion<36 THEN
- Screen:=OpenScreen(ADR(NewScreen))
- ELSE
- LOCAL ScreenTags(0..1) OF TagItem
- LOCAL Pens_3D OF USHORT
-
- Pens_3D:=$FFFF
- ScreenTags(0).ti_Tag:=$8000003A // SA_Pens
- ScreenTags(0).ti_Data:=ADR(Pens_3D)
- ScreenTags(1).ti_Tag:=TAG_DONE
- Screen:=OpenScreenTagList(ADR(NewScreen),ADR(ScreenTags()))
- ENDIF
-
- IF Screen THEN
- IOScreen:=ComalStruc@.IO_Screen
- ComalStruc@.IO_Screen:=Screen
- ENDIF
- ENDPROC CreateScreen
-
- PROC DeleteScreen
- IF Screen THEN
- CloseScreen(Screen)
- Screen:=0
- ComalStruc@.IO_Screen:=IOScreen
- ENDIF
- ENDPROC DeleteScreen
-
- PROC ScreenSignal(s OF LONG) SIGNAL
- CASE s OF
- WHEN SIG_STOP,SIG_END
- IF Screen THEN
- ScreenToBack(Screen)
- ENDIF
- WHEN SIG_CLOSE,SIG_DISCARD,SIG_CLEAR
- DeleteScreen
- OTHERWISE
- // No action
- ENDCASE
- ENDPROC ScreenSignal
-
- ENDMODULE SpecialScreen
-
-