芬琳漆世界排名第几:VB入门技巧N例(5)
来源:百度文库 编辑:九乡新闻网 时间:2024/05/02 07:23:43
13. 无边框窗体的右键菜单
设计无边框窗体时,如果使用菜单编辑器,就会自动改变成有边框的窗体,此时,可以在另外一个窗体中(一般情况下你的程序应该不止一个窗体的吧,如果真的只有一个,可以利用其他人写的类,添加右键)编辑菜单(VISIBLE属性设为FALSE),然后在本窗体中调用。调用形式如下:
14.创建圆角无边框窗体
15.拖动没有标题栏的窗体
方法一:
方法二:回调函数
设计无边框窗体时,如果使用菜单编辑器,就会自动改变成有边框的窗体,此时,可以在另外一个窗体中(一般情况下你的程序应该不止一个窗体的吧,如果真的只有一个,可以利用其他人写的类,添加右键)编辑菜单(VISIBLE属性设为FALSE),然后在本窗体中调用。调用形式如下:
- Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
- If Button = 2 Then
- PopupMenu Form2.mymenu
- End If
- End Sub
14.创建圆角无边框窗体
- Private Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal X1 As Integer, ByVal Y1 _ As Integer, ByVal X2 As Integer, ByVal Y2 As Integer, ByVal x3 As Integer, ByVal y3 As _ Integer) As Long
- Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
- Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hrgn As _ Long, ByVal bRedraw As Boolean) As Long
- Private Sub Form_Load()
- hround = CreateRoundRectRgn(0, 0, ScaleX(Form1.ScaleWidth, vbTwips, vbPixels), _ ScaleY(Form1.ScaleHeight, vbTwips, vbPixels), 20, 20)
- SetWindowRgn Me.hwnd, hround, True
- DeleteObject hround
- End Sub
15.拖动没有标题栏的窗体
方法一:
- Private Declare Function ReleaseCapture Lib "user32" () As Long
- 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 Const HTCAPTION = 2
- Private Const WM_NCLBUTTONDOWN = &HA1
- Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
- Dim ncl As Long
- Dim rel As Long
- If Button = 1 Then
- i = ReleaseCapture()
- ncl = SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0)
- End If
- End Sub
方法二:回调函数
- 'module:
- Public Const GWL_WNDPROC = (-4)
- Public Const WM_NCHITTEST = &H84
- Public Const HTCLIENT = 1
- Public Const HTCAPTION = 2
- 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
- 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
- Public prevWndProc As Long
- Function WndProc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal _Param As Long) As Long
- WndProc = CallWindowProc(prevWndProc, hWnd, Msg, wParam, lParam)
- If Msg = WM_NCHITTEST And WndProc = HTCLIENT Then
- WndProc = HTCAPTION
- End If
- End Function
- 窗体中:
- Private Sub Form_Load()
- prevWndProc = GetWindowLong(Me.hWnd, GWL_WNDPROC)
- SetWindowLong Me.hWnd, GWL_WNDPROC, AddressOf WndProc
- End Sub
- Private Sub Form_Unload(Cancel As Integer)
- SetWindowLong Me.hWnd, GWL_WNDPROC, prevWndProc
- End Sub
VB入门技巧N例(5)
VB入门技巧N例(3)
VB入门技巧N例(4)
VB入门技巧N例(6)
VB入门技巧N例(7)
VB入门技巧N例(8)
VB入门技巧N例(9)
VB入门技巧N例(10)
VB入门技巧N例(11)
编程入门网-Vb教程+
编程入门网-VB教程:第三章-VB语言+
vb.net入门:CheckedListBox控件的使用
VB爱好者乐园(VBGood) - 经验之谈 - VB编程的必备技巧
围棋入门n(完整版)
5个拍摄夜景的入门技巧
VB 窗体编程 技巧汇编 经验大全+
VB 窗体编程 技巧汇编 经验大全-
沟通的技巧n
做菜的技巧n
vb vb
编辑日志入门技巧
数码单反摄影技巧入门
数码单反摄影技巧入门
坐禅入门技巧