VB中就有呀叫MDI窗體,你選擇“工程—添加MDI窗體”就可以了,然后把你剛剛的FORM1窗體設(shè)為MDI的子窗體就在它的屬性里MDIChild設(shè)為True就可以了
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:申請域名、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、延長網(wǎng)站維護、網(wǎng)站推廣。
Public X, Y As Integer
Private Sub Form1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
X = e.X : Y = e.Y
End Sub
Private Sub Form1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
If X = e.X And Y = e.Y Then Exit Sub
If e.Button = Windows.Forms.MouseButtons.Left Then
Me.Left = Me.Left + e.X - X
Me.Top = Me.Top + e.Y - Y
End If
End Sub
Private Sub Command1_Click()
Me.Top = 0
Me.Left = 0
'Me 表示本窗體,如果是其他窗體可以替換,如Form2.top=0
End Sub
1991年,微軟公司推出了 Visual Basic 1.0。當時引起了很大的轟動。這個連接編程語言和用戶界面的進步被稱為Tripod(有些時候叫做Ruby),最初的設(shè)計是由阿蘭·庫珀(Alan Cooper)完成的。
許多專家把 VB 的出現(xiàn)當做是軟件開發(fā)史上的一個具有劃時代意義的事件。在當時,它是第一個“可視”的編程軟件。這使得程序員欣喜之極,都嘗試在VB的平臺上進行軟件創(chuàng)作。
微軟也不失時機地在四年內(nèi)接連推出 2.0、3.0、4.0 三個版本。并且從 VB 3.0 開始,微軟將Access的數(shù)據(jù)庫驅(qū)動集成到了 VB 中,這使得 VB 的數(shù)據(jù)庫編程能力大大提高。從 VB 4.0 開始,VB 也引入了面向?qū)ο蟮某绦蛟O(shè)計思想。VB 功能強大,學(xué)習(xí)簡單。而且,VB 還引入了“控件”的概念,使得大量已經(jīng)編好的 VB 程序可以被我們直接拿來使用。
2002年開始,微軟將.NET Framework與 Visual Basic 結(jié)合而成為 Visual Basic .NET (vb 點虐 ),重新打造 VB,新增許多特性及語法,又將 VB 推向一個新的高度。最新版本 Visual Basic 2012 也將帶來許多令人期待的新功能。
通過幾年的發(fā)展,它已成為一種專業(yè)化的開發(fā)語言和環(huán)境。用戶可用Visual Basic 快速創(chuàng)建Windows程序,并可編寫企業(yè)水平的客戶端/服務(wù)器程序及強大的數(shù)據(jù)庫應(yīng)用程序。
很簡單,通過WindowsAPI,刪除窗體菜單項就行了
首先在窗體類中聲明API:
Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As IntPtr, ByVal bRevert As Boolean) As IntPtr
Declare Function RemoveMenu Lib "user32" (ByVal lngHmenu As IntPtr, ByVal nPosition As Integer, ByVal wFlags As Integer) As Integer
其次聲明API參數(shù)常量:
Const MF_BYPOSITION As Integer = H400
然后在窗體類中寫入過程:
Private Sub UserForm_Initialize_stopmove() '禁止窗體移動
? Dim lngHwnd As IntPtr
? Dim lngHmenu As IntPtr
? lngHwnd = Me.Handle
? If lngHwnd 0 Then
? ? ? lngHmenu = GetSystemMenu(lngHwnd, False)
? ? ? RemoveMenu(lngHmenu, 0, MF_BYPOSITION) '這里的0代表菜單中從上往下數(shù)第一個菜單項
? End If
End Sub
Private Sub UserForm_Initialize_onmove() '恢復(fù)窗體移動
? Dim lngHwnd As IntPtr
? Dim lngHmenu As IntPtr
? lngHwnd = Me.Handle
? If lngHwnd 0 Then
? ? ? lngHmenu = GetSystemMenu(lngHwnd, True)
RemoveMenu(lngHmenu, 0, MF_BYPOSITION) '這里的0與禁止代碼中的數(shù)值同步,原因時雖然表面上刪除了菜單項,實則為隱藏了菜單項,各個菜單的索引值并沒有變,所以0依然代表初始菜單的第一個菜單項,即被刪除的那個菜單項
? End If
End Sub
然后如果你的窗口菜單是動態(tài)變化的,建議聲明常數(shù):
Const MF_BYPOSITION As Integer = H0
然后使用相關(guān)的Windows功能的常數(shù)進行刪除菜單。常數(shù)需要自行查看winuser.h頭文件
如果找不到該頭文件,可以看這里:網(wǎng)頁鏈接
其余信息詳見MSDN:網(wǎng)頁鏈接
最后說一下,不建議前面網(wǎng)友說的重寫WndProc的方法,因為這樣攔截標題欄點擊消息會導(dǎo)致窗體本身的菜單也無法顯示出來,有損窗體功能,并且像雙擊左上角圖標關(guān)閉窗體這樣的功能也會跟著攔截消息的操作一起被吞掉。