|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - Окно произволной формы в VB.NET |
|
VBA - Окно произволной формы в VB.NET
|
Пользователь Сообщения: 146 |
Профиль | Отправить PM | Цитировать Здравствуйте!)))Подскажите пожалуйста,можно ли в Visual Studio на VB.NEt сделать программу произвольной формы.Я похожий вопрос задавал в этой тема http://forum.oszone.net/nextoldesttothread-132109.html .Там я хотел сделать окно произвольной формы(КПК Сталкера) для Autorun.А теперь этот же КПК сталкера хочу сделать для программы в Visual Studio.Помогите пожалуйста,как это можно сделать,и возможно ли вообще.)))
|
|
Отправлено: 14:18, 28-11-2009 |
Ветеран Сообщения: 3320
|
Профиль | Отправить PM | Цитировать Доброго времени суток ProgrammerPC
Да это возможно. На похожий вопрос был ответ в 130 посте темы Visual Basic 2008 Там был вопрос про появляющийся фиолетовый цвет, при проектировки окна по изображению с альфа каналом (в последнем как раз и задаётся - что будет прозрачным). На основе тех трёх строчек уже можно получить форму с произвольной формой, заданную в картинке с альфа каналом. Остаётся правда заголовок окна, его можно убрать задав регион отсекающий последний. Но после убирание заголовка формой затруднительно управлять, не говорю про команды свернуть, на весь экран и закрыть это и так надеюсь понятно, а элементарно передвинуть на экране. Для решение этого вопроса поможет вставка двух Win32 функции. Imports System Imports System.Drawing Imports System.Windows.Forms Class Form1 Inherits Form Private Declare Function ReleaseCapture Lib "user32" () As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer Const WM_NCLBUTTONDOWN = &HA1, HTCAPTION = 2, HTLEFT = 10 Const HTTOPRIGHT = 14, HTRIGHT = 11, HTTOP = 12, HTTOPLEFT = 13 Const HTBOTTOM = 15, HTBOTTOMLEFT = 16, HTBOTTOMRIGHT = 17 Shared Sub Main() Application.Run(New Form1) End Sub Sub New() Me.TransparencyKey = BackColor Dim Img As Bitmap = Bitmap.FromFile("Используемое изображение.gif") Me.BackgroundImage = Img Dim rect As New Rectangle(0, 0, Me.ClientSize.Width - 1, Me.ClientSize.Height - 1) Dim sz As New Size(Me.ClientSize.Width \ 5, Me.ClientSize.Height \ 5) Dim path As New Drawing2D.GraphicsPath() path.AddLine(rect.Right, rect.Top + 22, _ rect.Right, rect.Bottom) path.AddLine(rect.Left + 5, rect.Bottom, _ rect.Left + 5, rect.Top + 22) Dim winreg As New Region(path) Me.Region = winreg End Sub Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown ReleaseCapture() SendMessage(Me.Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0) End Sub End Class |
Отправлено: 21:18, 28-11-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать |
Отправлено: 02:00, 26-02-2010 | #3 |
Ветеран Сообщения: 3320
|
Профиль | Отправить PM | Цитировать taravasya, код выше подходит и для VB.NET 2008.
Цитата:
|
|
Отправлено: 16:23, 27-02-2010 | #4 |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 16:37, 27-02-2010 | #5 |
Ветеран Сообщения: 3320
|
Профиль | Отправить PM | Цитировать taravasya, да.
В декларации "SendMessageA" (ByVal hwnd As IntPtr, ... hwnd всего лишь имя переменной (может быть любым) типа IntPtr, которая передаётся по значению (ByVal) в функцию SendMessageA. Me.Handle в данном случаи дескриптор объекта форма. |
Отправлено: 16:52, 27-02-2010 | #6 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - [решено] Окно автозапуска произвольной формы в Autorun Pro Enterprise 10 | ProgrammerPC | Оформление Windows XP | 6 | 20-11-2009 20:44 | |
[решено] .NET 3.0 нужен. А нужен ли .NET 2.0 для шаблонного сервера? | LevT | Автоматическая установка Windows 2000/XP/2003 | 7 | 09-07-2007 14:29 | |
.NET - *Теория*(VB.NET || C#.net ) Нужен алгоритм для мини - игры | ssdm | Программирование и базы данных | 11 | 17-05-2007 02:12 | |
Формы | Scorpion666 | Вебмастеру | 9 | 13-04-2006 10:33 | |
Сравнение VB.NET и Visual C++.NET | Commander | Программирование и базы данных | 5 | 09-05-2003 19:05 |
|