Results 1 to 3 of 3

Thread: form sizing with system tray

  1. #1
    Guest

    Post

    vb6: how do I size my main form (on startup)
    so that it leaves the bottom line system tray
    visible?.
    If is do windowsize 2 for max. size it covers the tray up.

  2. #2
    New Member
    Join Date
    Nov 1999
    Posts
    1

    Post

    Hi, I couldn't get u what u actually u r expecting Ok anyway. herewith i am sending some Procedures of script which is concern about the Resizing the form ,along with which will resize the controls accorindly.


    Public Sub ResizeForm(pfrmIn As Form)

    Dim FormControl As Control
    Dim isVisible As Boolean
    Dim StartX, StartY, MaxX, MaxY As Long
    Dim bNew As Boolean

    If Not bRunning Then
    bRunning = True

    If FindForm(pfrmIn) < 0 Then
    bNew = True
    Else
    bNew = False
    End If


    If pfrmIn.Top < 30000 Then
    isVisible = pfrmIn.Visible
    On Error Resume Next

    If Not pfrmIn.MDIChild Then
    On Error GoTo 0
    ' ' pfrmIn.Visible = False
    Else

    If bNew Then
    StartY = pfrmIn.Height
    StartX = pfrmIn.Width
    On Error Resume Next

    For Each FormControl In pfrmIn

    If FormControl.Left + FormControl.Width + 200 > MaxX Then
    MaxX = FormControl.Left + FormControl.Width + 200
    End If


    If FormControl.Top + FormControl.Height + 500 > MaxY Then
    MaxY = FormControl.Top + FormControl.Height + 500
    End If


    If FormControl.X1 + 200 > MaxX Then
    MaxX = FormControl.X1 + 200
    End If


    If FormControl.Y1 + 500 > MaxY Then
    MaxY = FormControl.Y1 + 500
    End If


    If FormControl.X2 + 200 > MaxX Then
    MaxX = FormControl.X2 + 200
    End If


    If FormControl.Y2 + 500 > MaxY Then
    MaxY = FormControl.Y2 + 500
    End If

    Next FormControl

    On Error GoTo 0
    pfrmIn.Height = MaxY
    pfrmIn.Width = MaxX
    End If

    On Error GoTo 0
    End If


    For Each FormControl In pfrmIn
    ResizeControl FormControl, pfrmIn
    Next FormControl

    On Error Resume Next

    If Not pfrmIn.MDIChild Then
    On Error GoTo 0
    pfrmIn.Visible = isVisible
    Else

    If bNew Then
    pfrmIn.Height = StartY
    pfrmIn.Width = StartX

    For Each FormControl In pfrmIn
    ResizeControl formControl, pfrmIn
    Next FormControl
    End If
    End If
    On Error GoTo 0
    End If
    bRunning = False
    End If
    End Sub

    **************

    Private Sub ResizeControl(inControl As Control, pfrmIn As Form)

    On Error Resume Next
    Dim i As Long
    Dim widthfactor As Single, heightfactor As Single
    Dim minFactor As Single
    Dim yRatio, xRatio, lTop, lLeft, lWidth, lHeight As Long
    yRatio = PerHeight(pfrmIn)
    xRatio = PerWidth(pfrmIn)
    i = FindControl(inControl, pfrmIn.Name)

    If inControl.Left < 0 Then
    lLeft = CLng(((ControlRecord(i).Left * xRatio) \ 100) - 75000)
    Else
    lLeft = CLng((ControlRecord(i).Left * xRatio) \ 100)
    End If

    lTop = CLng((ControlRecord(i).Top * yRatio) \ 100)
    lWidth = CLng((ControlRecord(i).Width * xRatio) \ 100)
    lHeight = CLng((ControlRecord(i).Height * yRatio) \ 100)

    If TypeOf inControl Is ListView Or TypeOf inControl Is SSTab Then 'attempting to adjust the font also RW
    inControl.Font.Size = CLng((ControlRecord(i).FontSize * xRatio) \ 100)
    inControl.Font.Bold = False
    Else
    inControl.FontSize = CLng((ControlRecord(i).FontSize * xRatio) \ 100)
    inControl.FontBold = False
    End If

    If TypeOf inControl Is Line Then

    If inControl.X1 < 0 Then
    inControl.X1 = CLng(((ControlRecord(i).Left * xRatio) \ 100) - 75000)
    Else
    inControl.X1 = CLng((ControlRecord(i).Left * xRatio) \ 100)
    End If

    inControl.Y1 = CLng((ControlRecord(i).Top * yRatio) \ 100)

    If inControl.X2 < 0 Then
    inControl.X2 = CLng(((ControlRecord(i).Width * xRatio) \ 100) - 75000)
    Else
    inControl.X2 = CLng((ControlRecord(i).Width * xRatio) \ 100)
    End If

    inControl.Y2 = CLng((ControlRecord(i).Height * yRatio) \ 100)
    Else
    inControl.Move lLeft, lTop, lWidth, lHeight
    inControl.Move lLeft, lTop, lWidth
    inControl.Move lLeft, lTop
    End If

    End Sub

    *****************

    Private Function FindControl(inControl As Control, inName As String) As Long

    Dim i As Long
    FindControl = -1

    For i = 0 To (MaxControl - 1)

    If ControlRecord(i).Parrent = inName Then

    If ControlRecord(i).Name = inControl.Name Then
    On Error Resume Next

    If ControlRecord(i).Index = inControl.Index Then
    FindControl = i
    Exit Function
    End If

    On Error GoTo 0
    End If

    End If

    Next i

    End Function

    If u have any doubt feel free to ask me..

  3. #3
    Guru Aaron Young's Avatar
    Join Date
    Jun 1999
    Location
    Red Wing, MN, USA
    Posts
    2,177

    Post

    I'm assuming you want a Form that has no Border, Caption, etc..

    In a Form with BorderStyle Set to Sizeable and ShowInTaskBar set to False and WindowState set to Maximized..
    Code:
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    Private Const GWL_STYLE = (-16)
    Private Const WS_CAPTION = &HC00000
    Private Const WS_BORDER = &H800000
    
    Private Sub Form_Load()
        'A Maximized Sizable Form doesn't Cover the Taskbar
        'So Just Remove the Caption and Border..
        Call SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) Xor WS_CAPTION Xor WS_BORDER)
    End Sub
    ------------------
    Aaron Young
    Analyst Programmer
    [email protected]
    [email protected]

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width