|
Программирование >> Автоматически обновляемые приложения
;Листинг 5.26. Эффект затухания при выходе из программы private void butClose Click(object sender, EventArgs e) { timerl.Enabled = true; private void timerl Tick(object sender, EventArgs e) { this.Opacity -= 0.1; if (this.Opacity <= 0) this.Close 0; Перемещение формы за заголовок Рассмотрим еще один пример с прозрачностью формы (листинг 5.27). Например, когда мы будем перетаскивать форму за ее заголовок с помощью мыши, то форма временно станет полупрозрачной. i Листинг 5.27. Использование прозрачности при перемещении формы protected override voi,d WndProc (ref Message m) { const mt WM NCLBUTTONDOWN = OxOOAl; const int WM NCMOUSEMOVE = OxOOAO; if (m.Msg == WM NCLBUTTONDOWN) { this.Opacity = 0.5; if (m.Msg == WM NCMOUSEMOVE) { this.Opacity = 1.0; base.WndProc(ref m); Неактивная форма Вот вам еще один пример с прозрачностью формы. Когда на экране находятся несколько открытых форм, то это может вызвать ощущение некоторого дискомфорта. Я предлагаю вам следующий вариант (листинг 5.28). Можно отловить сообщение о том, что окно программы стало неактивным, и сделать его полупрозрачным. И наоборот, когда окно вновь станет активным, вернуть ему первоначальное состояние. Листинг 5.28. Прозрачность у неактивной формы protected override void WndProc(ref Message m) { const int WM ACTIVATEAPP = OxOOlC; if (m.Msg == WM ACTIVATEAPP) { if (m.WParam.ToInt320 != 0) { this.Opacity = 1.0; else { this.Opacity = 0.5; base.WndProc(ref m); Примечание Примеры находятся в папке TransparentDemo на прилагаемом диске Запустите проект и потаскайте форму по экрану. Вы увидите, что при перемещении форма становится полупрозрачной. I Листинг 5.29. Создание формы без границ и заголовка forml.Text = string.Empty; forml.ControlBox = false; Как убрать кнопку X из заголовка формы? Еще один популярный вопрос, задаваемый на форумах- как убрать кнопку X в правом верхнем углу заголовка формы? Как ни странно, эта кнопка тесно связана с системным меню, точнее с последним ее пунктом Закрыть. Если мы уберем этот пункт из меню, то кнопка X на форме примет заблокированный вид. Для реализации этой задачи (листинг 5.30) нам понадобится функция Windows API GetSystemMenu, а также функции GetMenuItemCount, RemoveMenu И DrawMenuBar.... : Листинг 5.30. Объявление функций Windows API для системного меню Флаги для системного меню public enum MenuFlags MF BYCOMMAND = 0x00000000, MF BYPOSITION = 0x00000400, [Dlllmport( user32.dll )] private static extern IntPtr GetSystemMenu(IntPtr hwnd, int bRevert); [Dlllmport( user32.dll )] private static extern int GetMenuItemCount (IntPtr hJMenu) ; [Dlllmport( user32.dll )] private static extern int RemoveMenu (IntPtr hJMenu, int Position, MenuFlags uFlags); Как создать формы без границ и заголовка? Установите соответствующие значения в свойствах Text и ControlBox, как показано в листинге 5.29.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |