/* Copyright (c) Citrix Systems, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, * with or without modification, are permitted provided * that the following conditions are met: * * * Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ using System; using System.Runtime.InteropServices; using System.Windows.Forms; namespace XenAdmin.Controls.ConsoleTab { public partial class FullScreenHint : Form { [DllImport("Gdi32.dll", EntryPoint = "CreateRoundRectRgn")] private static extern IntPtr CreateRoundRectRgn ( int nLeftRect, // x-coordinate of upper-left corner int nTopRect, // y-coordinate of upper-left corner int nRightRect, // x-coordinate of lower-right corner int nBottomRect, // y-coordinate of lower-right corner int nWidthEllipse, // height of ellipse int nHeightEllipse // width of ellipse ); public FullScreenHint() { InitializeComponent(); Region = System.Drawing.Region.FromHrgn(CreateRoundRectRgn(0, 0, Width, Height, 20, 20)); label1.Text = GetFullScreenMessage(); } private string GetFullScreenMessage() { switch (Properties.Settings.Default.FullScreenShortcutKey) { case 0: return Messages.VNC_FULLSCREEN_MESSAGE_CTRL_ALT; case 1: return Messages.VNC_FULLSCREEN_MESSAGE_CTRL_ALT_F; case 2: return Messages.VNC_FULLSCREEN_MESSAGE_F12; default: return Messages.VNC_FULLSCREEN_MESSAGE_CTRL_ENTER; } } private void FullScreenHint_Load(object sender, EventArgs e) { Opacity = 0.0; // fully transparent at first, will only show after 1 ms timer1.Interval = 1; timer1.Start(); } private void timer1_Tick(object sender, EventArgs e) { if (Opacity == 0.0) { Opacity = 0.7; timer1.Interval = 100; } else { if (Opacity > 0.01) Opacity -= 0.01; else Close(); } } } }