Работа с Формами и применение API

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Bankir
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 21.12.2005 (Ср) 20:37

Работа с Формами и применение API

Сообщение Bankir » 17.01.2006 (Вт) 14:04

Хотелось бы знать каким образом в стандартной форме (Form) из кода можно изменить такие свойства как Caption="" ControlBox=True\False все только для того чтобы в программе скрывать верхнюю часть формы допустим по нажатию кнопки (там где иконка её caption и кнопки свернуть, развернуть, закрыть - Просто не помню как ето все одним словом завется)
короче скрывать и отображать Title формы, вот!

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 17.01.2006 (Вт) 14:24

Form.BorderStyle = 0

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 17.01.2006 (Вт) 14:48

из кода так нельзя, придется юзать API

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.01.2006 (Вт) 14:57

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

Private Declare Function CreateRectRgn Lib "gdi32.dll" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function SetWindowRgn Lib "user32.dll" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Long) As Long
Private Declare Function GetSystemMetrics Lib "user32.dll" (ByVal nIndex As Long) As Long
Private Declare Function GetWindowRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As RECT) As Long
Private Declare Function MapWindowPoints Lib "user32.dll" (ByVal hwndFrom As Long, ByVal hwndTo As Long, ByRef lppt As Any, ByVal cPoints As Long) As Long

Private Type RECT
  Left As Long
  Top As Long
  Right As Long
  Bottom As Long
End Type

Private Const SM_CYCAPTION As Long = 4
Private Const SM_CXEDGE As Long = 45
Private Const SM_CYEDGE As Long = 46

Private Sub Command1_Click()
  Static f As Boolean
  Dim r As RECT
 
  If f Then
    SetWindowRgn Me.hwnd, 0, 1
  Else
    GetWindowRect Me.hwnd, r
    MapWindowPoints 0, Me.hwnd, r, 2
    SetWindowRgn Me.hwnd, CreateRectRgn(0, GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CYEDGE) + 1, r.Right + GetSystemMetrics(SM_CXEDGE) * 2, r.Bottom - r.Top + GetSystemMetrics(SM_CYEDGE)), 1
  End If
  f = Not f
End Sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 17.01.2006 (Вт) 14:59

Точно. Невнимательность, стыдно.

Bankir
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 21.12.2005 (Ср) 20:37

Сообщение Bankir » 17.01.2006 (Вт) 15:15

оно работает и так если вот так
Form1.BorderStyle = 0
Form1.Caption = ""
но как сделать чтобы это было красиво то есть не стакой дергатней чтобы форма так не дергалась
чтото вроде
форма на весь экран Form1.WindowState = 0 и при етом исчезает Title
а по клику на форму Title отображается тоже без дерганий
приетом форма отображается поверх системной панели в момент когда Title скрыт а когда виден системная панель поверх формы


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: Google-бот и гости: 138

    TopList