更換VB.NET窗體標(biāo)題欄的方法
#t#VB.NET經(jīng)過(guò)長(zhǎng)時(shí)間的發(fā)展,很多用戶都很了解VB.NET窗體標(biāo)題欄了,這里我發(fā)表一下個(gè)人理解,和大家討論討論。VB.NET做為VB6的升級(jí)版本,具備了許多新的功能,它可以簡(jiǎn)便快捷地創(chuàng)建 .NET 應(yīng)用程序(包括 XML Web services 和 ASP.NET Web 應(yīng)用程序),還是一個(gè)功能強(qiáng)大的面向?qū)ο蟮木幊陶Z(yǔ)言(如繼承、接口和重載)。新的語(yǔ)言功能包括自由線程處理和結(jié)構(gòu)化異常處理。VB.NET 還完全集成了.NET 框架和公共語(yǔ)言運(yùn)行庫(kù),.NET 框架和公共語(yǔ)言運(yùn)行庫(kù)共同提供語(yǔ)言互操作性、垃圾回收、增強(qiáng)的安全性和改進(jìn)的版本支持??梢哉f(shuō)是一個(gè)劃時(shí)代的產(chǎn)品!
無(wú)標(biāo)題欄的窗體的拖動(dòng)問(wèn)題,在特殊窗體的應(yīng)用中,我們有時(shí)需要把VB.NET窗體標(biāo)題欄屏蔽掉,以窗體換上自己的外殼。是,當(dāng)去掉了VB.NET窗體標(biāo)題欄后,移動(dòng)窗體就成了一個(gè)問(wèn)題。我們還是來(lái)看一下在VB6中的實(shí)現(xiàn),VB6中實(shí)現(xiàn)(借助API函數(shù)SendMessage)在設(shè)計(jì)時(shí)將窗體的BorderStyle屬性設(shè)置為0-none
- PrivateDeclareFunction SendMessage Lib "User32" Alias "SendMessageA"
(ByVal hWnd AsLong, ByVal wMsg AsLong, ByVal wParam AsLong, ByVal lParam As Any) AsLong- PrivateDeclareSub 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)
- Dim lngReturnValue AsLong
- 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&)
- EndIf
- EndSub
- PrivateSub Form_Paint()
- Me.Print("Click on the form, hold the mouse button and drag it")
- EndSub
在VB.NET窗體標(biāo)題欄中,這次需要借助API SendMessage了,在設(shè)計(jì)時(shí)將Form.FormBorderStyle 屬性設(shè)置為None,然后添加以下代碼:
- DeclareFunction SendMessage Lib "user32" Alias "SendMessageA"
(ByVal hwnd AsInteger, ByVal wMsg AsInteger, ByVal wParam AsInteger,
ByVal lParam AsInteger) AsInteger- PrivateDeclareSub ReleaseCapture Lib "User32" ()
- Const WM_NCLBUTTONDOWN = &HA1
- Const HTCAPTION = 2
- PrivateSub Form1_MouseDown(ByVal sender AsObject,
ByVal e As System.Windows.Forms.MouseEventArgs) HandlesMyBase.MouseDown- ReleaseCapture()
- SendMessage(Me.Handle.ToInt64, WM_NCLBUTTONDOWN, HTCAPTION, 0)
- EndSub