无标题栏和边框的窗体
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
技巧1 无标题栏和边框的窗体
如果希望制作无标题栏和边框的窗体,那么可以使用API函数。
在VBE窗口中单击菜单“插入”→“用户窗体”,双击窗体,在其代码窗口中输入下面的代码:
#001 Private Declare Function DrawMenuBar Lib "user32" (ByVal Hwnd As Long) As Long
#002 Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal Hwnd As Long, ByVal nIndex As Long) As Long #003 Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal Hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
#004 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long #005 Private Const GWL_STYLE As Long = (-16)
#006 Private Const GWL_EXSTYLE = (-20)
#007 Private Const WS_CAPTION As Long = &HC00000
#008 Private Const WS_EX_DLGMODALFRAME = &H1&
#009 Private Sub UserForm_Initialize()
#010 Dim IStyle As Long
#011 Dim Hwnd As Long
#012 If Val(Application.Version) < 9 Then
#013 Hwnd = FindWindow("ThunderXFrame", Me.Caption)
#014 Else
#015 Hwnd = FindWindow("ThunderDFrame", Me.Caption)
#016 End If
#017 IStyle = GetWindowLong(Hwnd, GWL_STYLE)
#018 IStyle = IStyle And Not WS_CAPTION
#019 SetWindowLong Hwnd, GWL_STYLE, IStyle
#020 DrawMenuBar Hwnd
#021 IStyle = GetWindowLong(Hwnd, GWL_EXSTYLE) And Not WS_EX_DLGMODALFRAME
#022 SetWindowLong Hwnd, GWL_EXSTYLE, IStyle
#023 End Sub
#024 Private Sub UserForm_Click()
#025 Unload Me
#026 End Sub
代码解析:
窗体初始化时使用API函数去除其标题栏和边框。
第1行到第8行代码,API函数的声明。
第12行到第16行代码,获取窗口句柄。
第17行到第20行代码,去除窗体标题栏。
第21、22行代码,去除窗体边框。
第24行到第26行代码,窗体的单击事件,单击窗体后关闭该窗体。
窗体运行后如图1-1所示,单击后关闭该窗体。
图1-1 无标题栏和边框的窗体