Форум   Статьи   Новости   Файлы   Bugtraq   Сниффер   Друзья   О Клубе
Вернуться   HPC / Кодинг / .NET / VB.NET
   
  Страница 1
  , 11:49   #1
DWA
Местный
 
Аватар для DWA
 
Регистрация: 25.02.2010
Сообщений: 417

Репутация: 82 / 1
По умолчанию Отображение ошибок в стиле QIP или MSN

Собственно, если кто не знает, выглядят подобные сервисные сообщения следующим образом:
[img]http://img5.kbyte.ru/12d220d4-2770-4273-9ead-2fc1cfbf43f5.aspx[/img]
Как уже и было сказано ранее - цель обзора научиться самостоятельно делать вывод подобных сообщений. Делается это достаточно просто и даже не требуются особые навыки программирования, т.е. с задачей по силам справиться даже начинающим программистам.

Для начала создадим новое приложение, типа Windows Forms Application, у нас по умолчанию как всегда создается одна форма для проекта, но нам потребуется еще одна, добавим ее следующим образом Project - Add Windows Form..., дадим ей имя Alert - это будущая заготовка для нашего "алерта", сделаем свойство новой формы FormBorderStyle равным None, т.е. уберем рамку вокруг нее.

Далее поправим размеры формы Alert до нужного нам размера, следует сделать ее компактной. Затем разместим один Label по середине нашей формы - при помощи него мы будем отображать пользователю текст ошибки. Откроем окно редактирования кода для формы Alert и приступим к его написанию.

При помощи класса My.Computer.Screen мы можем получить размер рабочой области экрана (WorkingArea).

Свойство My.Computer.Screen.WorkingArea.Width - содержит ширину рабочего стола, а свойство Height - его длину. Основываясь на этом мы можем расчитать позицию вывода окошка на экране.
source:
Me.SetDesktopLocation(My.Computer.Screen.WorkingArea.Width - <Ширина формы Alert>, _
My.Computer.Screen.WorkingArea.Height - <Высота формы Alert>
Чтобы отобразить форму в нужной части экрана, нам необходимо вычесть длину и ширину нашей формы от длины и ширины рабочего стола, иначе бы форма отображалась не в углу рабочего стола, а за его пределами. Данное действие можно облегчить следующим образом:
source:
Private Sub Alert_Load() Handles MyBase.Load
 Me.SetDesktopLocation(My.Computer.Screen.WorkingArea.Width - Me.Size.Width, _
 My.Computer.Screen.WorkingArea.Height - Me.Size.Height)
End Sub
Чтобы закрыть окно, в свойство формы Click добавим:
source:
Me.Close()
А для того чтобы приукрасить закрытие формы и сделать его более эффектным, сделаем плавное закрытие окна (фишка из MSN), добавим следующий код в событие FormClosing:
source:
For FadeOut = 90 To 10 Step -10
 Me.Opacity = FadeOut / 100
 Me.Refresh()
 Threading.Thread.Sleep(40)
Next
Далее в пределе класса нашей самой первой формы Form1, создадим небольшое событие, для отображения текста и ошибки:
source:
Public Sub Show(ByVal text As String, ByVal limit As Integer)
 If text.Length > limit Then
 MsgBox("Привышен лимит сообщения, уменьшите кол-во символов в сообщении")
 Else
 Label1.Text = text
 End If
 Alert.Show()
End Sub
limit необходим нам для ограничения символов текста ошибки, т.к. если оно будет слишком большим то может и не влезть в окно.

Добавим на Form1 кнопку Button и в событие Click разместим следующий код:
source:
Show("Это ошибка", 15)
Пробуем запустить приложение и нажать кнопку. Если все было сделано правильно, то получится что то типа следующего:
[img]http://img1.kbyte.ru/9eeef5b4-f577-4572-9c57-8439723d0c9e.aspx[/img]

Как видно, я украсил немного окошечко, сделав его окончательно в стиле QIP. Сделать можно следующим образом, выбираем себе рамку, и в свойстве формы Alert - BackgroundImage указываем путь до изображения, все.

(c) DWA aka [i]Pro
 
Пользователь вне форума    
Наши Спонсоры
  , 14:27   #2
1nt
Постоянный
 
Аватар для 1nt
 
Регистрация: 19.11.2010
Сообщений: 733

Репутация: 141 / 2
По умолчанию

Славненько
__________________
[B][COLOR="Red"][URL="https://hpc.name/showthread.php?t=26401#post284052"]Кейлогер актуален[/URL][/COLOR][/B]
Пользователь вне форума    
  , 14:02   #3
Новичок
 
Регистрация: 23.12.2011
Сообщений: 5

Репутация: 0 / 0
По умолчанию

спойлера с кодом нет(
 
Пользователь вне форума    
  , 20:51   #4
Banned
 
Регистрация: 12.02.2011
Сообщений: 257

Репутация: 8 / 0
По умолчанию

Кстати говоря на будущее, часто встречаются с ошибкой плавного "исчезания" и "появления" формы, а именно исчезает, но не появляется.
Цитата:
Если смотреть значение Me.Opacity во время пошаговой трассировки, то оно через пару tick-ов становится не как по идее должно быть 0.9 -> 0.8 -> 0.7, а 0.8000000001 -> 0.700000000002,
и при сравнении выходит, что числа не одинаковые. Происходит это ввиду особенностей типа float/double. Поэтому нужно округлять.
Тут объяснили.
__________________
Алсо, сегодня анон лизецрел бурлящие говна при наборе «война в 2010» в гуглях. Ванга предказывает, троллота набегает, анонимусы ликуют!
Пользователь вне форума    
 

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аки на мейл GrandMaster Раздачи 338 20.12.2014 21:09
Законодательство. Savkovyimetod Оффтоп 0 03.07.2011 16:15
Всех с праздником Хеллоун!!! anisjon За чашечкой чая 21 31.10.2010 16:46
[Обзор] Ошибки Windows Sma1L Новичкам 1 14.10.2010 21:59



Часовой пояс GMT +2
Powered by vBulletin® 3.x.x Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.

Copyright © 2008 - 2013 «HPC» Реклама на сайте Правила Форума Пользовательское соглашение Работа на сайте
При копировании материалов ставьте ссылку на источник
Все материалы представлены только в ознакомительных целях, администрация за их использование ответственности не несет.