Окно без заголовка

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Окно без заголовка

Сообщение Viper » 03.05.2006 (Ср) 17:37

Понадобилось написать маленькую прогу, отображающую некоторую полезную пользователю информацию. Для этой цели используется окно без заголовка скромно висящее в уголке экрана. Помимо того, что у окна нет заголовка для него свойство ShowInTaskbar установлено в False и, по желанию пользователя, свойство TopMost может устанавливатся в True.

Получается, что в Панели задач окно не отображется (так и должно быть), но при переборе окон через комбинацию Alt+Tab его видно (чего быть по идее не должно).

Вопрос: что надо сделать, чтобы окно не было доступно через Alt+Tab?
Весь мир матрица, а мы в нем потоки байтов!

Alex_2005
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 242
Зарегистрирован: 07.04.2005 (Чт) 17:09
Откуда: Germany, Baden-Wurttemberg, Bietigheim-Bissingen

Сообщение Alex_2005 » 04.05.2006 (Чт) 15:05

в FormBorderStyle выбери FixedToolWindows. Но тогда будет отображаться заголовок, пусть и не большой, но не то. Пробовал при помощи апи:
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" ( _
ByVal hwnd As Long, _
ByVal nIndex As Long) As Long

Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Const GWL_STYLE As Long = -16
Const WS_EX_TOOLWINDOW As Long = &H80&
Const GWL_EXSTYLE As Long = -20
не работает. Происходит ошибка. Да и результат был бы тот же что и в первом варианте: в Alt Tab не отобржается, но заголовок тут как тут!
Ничего, ща попробую заморочить, может получиться
Guten Morgen! А если не Guten, то тогда это и не Morgen...

Alex_2005
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 242
Зарегистрирован: 07.04.2005 (Чт) 17:09
Откуда: Germany, Baden-Wurttemberg, Bietigheim-Bissingen

Сообщение Alex_2005 » 04.05.2006 (Чт) 15:22

Ок, сделал. Значит так в свойстве FormBorderStyle указываешь FixedToolWindow. В ALT TAB больше не видно. Но заголовок есть. Теперь уберём заголовок:

Код: Выделить всё

  Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim oRegion As New Region(New Rectangle(20, 20, 100, 100))
        Me.Region = oRegion
    End Sub

Тоесть меняешь используемый регион для твоей формы и тем самым не показываешь заголовок.
Guten Morgen! А если не Guten, то тогда это и не Morgen...

Alex_2005
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 242
Зарегистрирован: 07.04.2005 (Чт) 17:09
Откуда: Germany, Baden-Wurttemberg, Bietigheim-Bissingen

Re: Окно без заголовка

Сообщение Alex_2005 » 04.05.2006 (Чт) 15:28

!Viper! писал(а):Получается, что в Панели задач окно не отображется (так и должно быть), но при переборе окон через комбинацию Alt+Tab его видно (чего быть по идее не должно).
Alt+Tab[/b]?


а видно потому, что несмотря на то что у формы нет заголовка , она фомой была, формой и осталась. Поэтому нужно зделать её "неполноценной" формой. Это добиваемся с помощью FixedToolWindow.
Guten Morgen! А если не Guten, то тогда это и не Morgen...

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 04.05.2006 (Чт) 15:43

будем поглядеть! Спасибо!
Весь мир матрица, а мы в нем потоки байтов!

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 05.05.2006 (Пт) 9:43

Все работает как надо. А нужные размеры региона определяются через исползование свойств класса SystemInformation FixedFrameBorderSize и ToolWindowCaptionHeight.

З.Ы. Аналогичная прога на VB6 фурчит как надо без каких-либо дополнительных манипуляций с регионом. Похоже все-таки дело в каких стилях создаваемого окна, которые на первый взгляд одинаковы.
Весь мир матрица, а мы в нем потоки байтов!


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 46

    TopList