小弟我正在制作一个软件的UI界面,希望能实现如:Windows Media Player 那样在标题栏及边框被隐藏的情况下,使用其他控件模拟他们的功能,从而能应用自定义外观。
  但在使用其他控件模拟他们的功能后,如:在客户区右下角拖动窗体以改变窗体大小时,窗体会因MOUSE_MOVE事件而不断重绘窗体,而我希望能够象Windows Media Player 那样在MOUSE_MOVE事件发生时只是显示一个用于定位的虚线框,在发生MOUSE_UP事件时才重绘窗体(类似于边框的功能),还有在移动窗体时也希望使用虚线框来定位。
  但我没有找到vb2005类库里有类似功能的支持,是否要用到API
  请各位老大指点!

解决方案 »

  1.   

    应该是要用到API.对.Net这个堡垒了解太不了.
    这里是一个,移动无标题的窗体的VB6代码,希望对你有帮助
    Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Declare Sub ReleaseCapture Lib "User32" ()
    Const WM_NCLBUTTONDOWN = &HA1
    Const HTCAPTION = 2
    Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        'KPD-Team 1999
        'URL: http://www.allapi.net/
        'E-Mail: [email protected]
        Dim lngReturnValue As Long
        If Button = 1 Then
            'Release capture
            Call ReleaseCapture
            'Send a 'left mouse button down on caption'-message to our form
            lngReturnValue = SendMessage(Me.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
        End If
    End Sub
    Private Sub Form_Paint()
        Me.Print "Click on the form, hold the mouse button and drag it"
    End Sub
      

  2.   

    既然知道了如何拖动窗体,那改变大小不就容易了。' 拖动窗体
    Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        ReleaseCapture
        SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0
    End Sub' 从左下改变窗体大小
    Private Sub Label2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        ReleaseCapture
        SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTBOTTOMLEFT, 0
    End Sub' 从右下改变窗体大小
    Private Sub Label3_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        ReleaseCapture
        SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTBOTTOMRIGHT, 0
    End Sub' 从左上改变窗体大小
    Private Sub Label4_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        ReleaseCapture
        SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTTOPLEFT, 0
    End Sub' 从右上改变窗体大小
    Private Sub Label5_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        ReleaseCapture
        SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTTOPRIGHT, 0
    End Sub
      

  3.   

    好像LZ说的是想要拖动窗体时,仅显示边框吧?PS:偶的WMP在移动时没有虚线框滴:)桌面,右键,属性,外观,效果,“拖动时显示窗口内容”