更换VB.NET窗体标题栏的方法

#t#VB.NET经过长时间的发展,很多用户都很了解VB.NET窗体标题栏了,这里我发表一下个人理解,和大家讨论讨论。VB.NET做为VB6的升级版本,具备了许多新的功能,它可以简便快捷地创建 .NET 应用程序(包括 XML Web services 和 ASP.NET Web 应用程序),还是一个功能强大的面向对象的编程语言(如继承、接口和重载)。新的语言功能包括自由线程处理和结构化异常处理。VB.NET 还完全集成了.NET 框架和公共语言运行库,.NET 框架和公共语言运行库共同提供语言互操作性、垃圾回收、增强的安全性和改进的版本支持。可以说是一个划时代的产品!

无标题栏的窗体的拖动问题,在特殊窗体的应用中,我们有时需要把VB.NET窗体标题栏屏蔽掉,以窗体换上自己的外壳。是,当去掉了VB.NET窗体标题栏后,移动窗体就成了一个问题。我们还是来看一下在VB6中的实现,VB6中实现(借助API函数SendMessage)在设计时将窗体的BorderStyle属性设置为0-none

 
 
 
  1. PrivateDeclareFunction SendMessage Lib "User32" Alias "SendMessageA" 
    (ByVal hWnd AsLong, ByVal wMsg AsLong, ByVal wParam AsLong, ByVal lParam As Any) AsLong
  2. PrivateDeclareSub ReleaseCapture Lib "User32" ()
  3. Const WM_NCLBUTTONDOWN = &HA1
  4. Const HTCAPTION = 2
  5. Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  6. Dim lngReturnValue AsLong
  7. If Button = 1 Then
  8. 'Release capture
  9. Call ReleaseCapture()
  10. 'Send a 'left mouse button down on caption'-message to our form
  11. lngReturnValue = SendMessage(Me.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
  12. EndIf
  13. EndSub
  14. PrivateSub Form_Paint()
  15. Me.Print("Click on the form, hold the mouse button and drag it")
  16. EndSub

在VB.NET窗体标题栏中,这次需要借助API SendMessage了,在设计时将Form.FormBorderStyle 属性设置为None,然后添加以下代码:

 
 
 
  1. DeclareFunction SendMessage Lib "user32" Alias "SendMessageA" 
    (ByVal hwnd AsInteger, ByVal wMsg AsInteger, ByVal wParam AsInteger, 
    ByVal lParam AsInteger) AsInteger
  2.  
  3. PrivateDeclareSub ReleaseCapture Lib "User32" ()
  4. Const WM_NCLBUTTONDOWN = &HA1
  5. Const HTCAPTION = 2
  6.  
  7. PrivateSub Form1_MouseDown(ByVal sender AsObject, 
    ByVal e As System.Windows.Forms.MouseEventArgs) HandlesMyBase.MouseDown
  8. ReleaseCapture()
  9. SendMessage(Me.Handle.ToInt64, WM_NCLBUTTONDOWN, HTCAPTION, 0)
  10. EndSub

当前文章:更换VB.NET窗体标题栏的方法
新闻来源:http://www.csdahua.cn/qtweb/news43/419043.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网