Click here to Skip to main content
15,940,550 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
I have developed a touchscreen application on a kiosk running Windows XP. The app is a Windows Form written in C#. All works fine and I am ready to deploy. Since these kiosks will be in public places, I thought a screensaver showing pictures and information with different transistions would be eye catching. Everyone likes it.

However, the first screen of the app is a splashscreen with two big buttons on it and the client must touch one to identify what kind of client they are. Once a button is touched, the input screen (behind the splashscreen) appears.

The problem is that when the screensaver is active and someone touches the screen at the same location of one of the buttons behind the screensaver, the two button splashscreen is bypassed and goes directly to the input screen. The client is then identified by whatever button they accidently touched without knowing it. This is only a problem with the touchscreen and not if a mouse is used.

I've been reading all kinds of articles here and Google lists of how to create screensavers. Seems doable but have not found anyone address this. If someone did, I did not understand it.

Before I continue, can anyone tell me if it is possible to identify an area on the screensaver that can be hotspot to deactivate it. Touching other areas on screensaver would do nothing. If so, I would place this area in some place not over the two buttons.

I hope this makes sense. Any advise would be much appreciated.
Posted

1 solution

Strange problem.

The solution you want would not help you much. You will create another problem: the user won't be able to get rid off the your splash or screen saver in one touch. Many will be confused.

However, there is much better work-around. Before showing touch screen, disable everything underneath. (Assign Control.Enabled to false. You can do it for your main form or whatever.) Re-enable when you close or hide your screen saver form.

—SA
 
Share this answer
 
Comments
JTRizos 22-Jun-11 12:44pm    
Thanx SA, I hear what you are saying but currently I am using a JPG image we created as the screensaver. What I understand from your suggestion is that the screensaver needs to be a form with the control.enabled to true in it. Correct? If so, won't the control.enable to false in the main form not also disable the control in the screensaver?

Thanx again for your prompt response and with a possible solution I hadn't thought of.
Sergey Alexandrovich Kryukov 22-Jun-11 13:11pm    
My advice will work anyway, with little modification. You problem is accidental "clicks" on something which is not supposed to be clicked. Disable this "something".

I would suggest you make your screensaver a separate form. In this way, you can disable your whole main form underneath. The problem may not even exist, but accidental click is possible due to clumsy touch even when the screensaver is removed/hidden.

It should work, I have no doubt.
--SA
JTRizos 24-Jun-11 12:41pm    
Hi SA, I've been trying to get this to work but am missing something. The Kiosk app is a Winform project so all the forms that make it up are within the project. I guess I am stuck on the making the "screensaver a separate form".

This is only my third Winform app that I've programmed so a lot of this is still new to me.

If I make the screensaver a form within the Kiosk project and, based on other C# screensaver projects I've found, I make the .exe file a screensaver by changing the exe to .scr, it seems that will make the whole Kiosk project a screensaver under Windows.

If I make the screensaver a seperate form within it's own project, I do not know how to make control.enable the Kiosk controls.

I am sure I am not understanding something but could you please explain this a little more, I would really appreciate it. I understand what you are suggesting but I am stuck on the HOW.

Thanx for your patience.
Sergey Alexandrovich Kryukov 24-Jun-11 20:28pm    
Well, after your further explanation I feel I don't have full picture. First, *.scr is something different, but in fact this is only an regular application started from the command line. And I did not ever work with Kiosk. Now I don't know what did you try so far and what failed.
Did you try disabling of the main application window? What's was your screensaver as NOT a separate window: a control of the main application window? If this is control, touch events may still be routed to the main form. The screensaver is supposed to consume all the events. How do you detect the screen saver is gone? How you remove it? Do you removed it from form or hide it? Can you simply disable all the events for the time the screensaver is on. What's the problem making screensaver a separate form? It could be simply always maximized form. (With WPF things are simpler.)
The problem does not look difficult, but it needs precise information. You can always run it under debugger, bookmark the code where parasitic even is raised on touch and the debugger will show you where it comes from.
--SA

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900