已经屏蔽了windows任务栏
此时窗体最大化后,任务栏区域覆盖不了 
如何在最大化时让其铺满全屏?
谢谢各位

解决方案 »

  1.   

    转贴一个方法,我用过挺不错的,你试试看:
    在模块里 Option Explicit 
    Public OldWindowProc As Long 
    Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long 
    Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long 
    Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal ByteLen As Long) 
    Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long 
    Public Const WM_GETMINMAXINFO = &H24 
    Type POINTAPI 
    x As Long 
    y As Long 
    End Type 
    Type MINMAXINFO 
    ptReserved As POINTAPI 
    ptMaxSize As POINTAPI 
    ptMaxPosition As POINTAPI 
    ptMinTrackSize As POINTAPI 
    ptMaxTrackSize As POINTAPI 
    End Type Public Function SubClass1_WndMessage(ByVal hwnd As Long, ByVal Msg As Long, ByVal wp As Long, ByVal lp As Long) As Long 
    If Msg = WM_GETMINMAXINFO Then 
    Dim MinMax As MINMAXINFO 
    CopyMemory MinMax, ByVal lp, Len(MinMax) 
    MinMax.ptMinTrackSize.x = Screen.Width / Screen.TwipsPerPixelX  '最小X          你自己改去吧 
    MinMax.ptMinTrackSize.y = Screen.Height / Screen.TwipsPerPixelY - 25 '最小Y 
    MinMax.ptMaxTrackSize.x = Screen.Width / Screen.TwipsPerPixelX + 8 '最大X 
    MinMax.ptMaxTrackSize.y = Screen.Height / Screen.TwipsPerPixelY - 24 '最大Y 
    CopyMemory ByVal lp, MinMax, Len(MinMax) 
    SubClass1_WndMessage = 1 
    Exit Function 
    End If 
    SubClass1_WndMessage = CallWindowProc(OldWindowProc, hwnd, Msg, wp, lp) 
    End Function 
    在窗体里 
    Option Explicit   Const WS_MAXIMIZEBOX = &H10000              '最大化按纽 
      Const GWL_STYLE = (-16) 
      Const GWL_WNDPROC = (-4) 
        
      Private Sub MDIForm_Load() 
              Dim lWnd    As Long 
          
              Me.WindowState = 2 '窗口状态是最大化 
              lWnd = GetWindowLong(Me.hwnd, GWL_STYLE) 
              lWnd = lWnd And Not (WS_MAXIMIZEBOX)                      '样式里去掉最大化按纽 
              lWnd = SetWindowLong(Me.hwnd, GWL_STYLE, lWnd) 
    OldWindowProc = GetWindowLong(Me.hwnd, GWL_WNDPROC) 
    Call SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf SubClass1_WndMessage) 
    End Sub Private Sub MDIForm_Unload(Cancel As Integer) 
    Call SetWindowLong(Me.hwnd, GWL_WNDPROC, OldWindowProc) 
    End Sub 
      

  2.   

    http://www.m5home.com/blog/article.asp?id=222看看这个代码里有没有你所需要的.
      

  3.   

    不用这么复杂吧,windowstate设置为maximized
    我试了一下可以铺满全屏
      

  4.   

    不用这么复杂吧,windowstate设置为maximized
    我试了一下可以铺满全屏
      

  5.   

     打开后
    minimizedFocus处于最小化
    MaximizedFocus处于最大化
    NormalFocus处于 正常化
      

  6.   

     打开后
    minimizedFocus处于最小化
    MaximizedFocus处于最大化
    NormalFocus处于 正常化
      

  7.   

    但要把窗体的borderStyle设置成0才行,否则任务栏还会出现
      

  8.   

    自己搞定了
    不过还是要谢谢各位  散分~~呵呵Private Declare Function SHAppBarMessage Lib "shell32.dll" (ByVal dwMessage As Long, pData As APPBARDATA) As Long
    Private Const ABS_ALWAYSONTOP = &H2
    Private Const ABS_AUTOHIDE = &H1
    Private Const ABM_SETSTATE = &HA
    Private Type APPBARDATA
        cbSize As Long
        hwnd As Long
        uCallbackMessage As Long
        uEdge As Long
        rc As RECT
        lParam As Long
    End TypePrivate Sub HideTask()
        Dim mBar As APPBARDATA
        mBar.hwnd = hTaskBar
        mBar.lParam = ABS_AUTOHIDE
        SHAppBarMessage ABM_SETSTATE, mBar
    End Sub
    Public Sub ShowTask()
        Dim mBar As APPBARDATA
        mBar.hwnd = hTaskBar
        mBar.lParam = ABS_ALWAYSONTOP
        SHAppBarMessage ABM_SETSTATE, mBar
    End SubPrivate sub Command1_Click()'屏蔽Windows
        HideTask
        Shell "taskkill.exe /im explorer.exe /f", vbHide
        Form1.WindowState = 2
    End sub