我的目标:让中国的大学生走出校门的那一刻就已经具备这些office技能,让职场人士能高效使用office为其服务。支持我,也为自己加油!
还有关不掉的窗体?
先来看下效果:
#If VBA7 And Win64 Then Private Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long Private Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare PtrSafe Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long Private Declare PtrSafe Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long#Else Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long Private Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long#End IfConst GWL_STYLE = -16Const WS_CAPTION = &HC00000Private Sub UserForm_Initialize() Dim lngWindow As Long, lFrmHdl As Long lFrmHdl = FindWindowA(vbNullString, Me.Caption) lngWindow = GetWindowLong(lFrmHdl, GWL_STYLE) lngWindow = lngWindow And Not WS_CAPTION Call SetWindowLong(lFrmHdl, GWL_STYLE, lngWindow) Call DrawMenuBar(lFrmHdl)End Sub
向左滑动可以查看完整代码
看着很复杂,难在对四个API函数的理解上,梳理下,其实也没那么复杂。整段代码分两部分,第一部分,因为要使用API函数,所以要进行声明,因为涉及到32位和64的office版本,所以声明时用#If VBA7 And Win64 Then#Else#End If的结构。64位的Excel中相比32位的Excel声明API函数就多了一个关键字PtrSafe,其它的都一样,而每个API函数的声明在网上都可以查到,所以这些没必要记,只要知道哪个API函数可以干什么事情就可以了。Sub过程部分,在窗体初始化时,首先要FindWindowA函数获取到这个窗体的句柄。关于句柄(handle),大家可以百度,简单理解的话就是每打开一个窗口,系统就会给该窗口分配一个句柄,系统想要对这个窗口做出响应是要通过该句柄进行的。就像公司给每个员工分配一个工号道理差不多。获取到该窗体的句柄后,通过GetWindowLong函数获取到该窗口的信息,GWL_STYLE为该函数的第二个参数的一个常量,表示要获取的窗口样式。lngWindow = lngWindow And Not WS_CAPTION表示从获取到的窗口样式中除去WS_CAPTION(窗体的标题),即lngWindow代表的样式为无标题样式。然后用SetWindowLong函数为窗口重新设置信息,然后用DrawMenuBar函数重画窗口。以上便是无标题窗口的创建方法。本节的分享就到这里,鹏哥祝大家每天都有进步。
聚米为谷
博学宏才
更多学习内容
手机端请扫描
电脑端请登录
www.mihong.top
