打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VBA实用小程序04:在用户窗体标题栏添加最大化和最小化按钮
userphoto

2018.02.03

关注


有时候,我们可能相在用户窗体标题栏添加最大化和最小化按钮,以方便对用户窗体的操控。下面是我找到的一段实现此功能的VBA代码,供大家需要时调用。

 

#If Win64 Then

    Private Declare PtrSafeFunction GetWindowLongPtr _

        Lib 'user32.dll'Alias 'GetWindowLongPtrA' ( _

        ByVal hwnd As LongPtr, _

        ByVal nIndex As Long) AsLongPtr

 

    Private Declare PtrSafeFunction SetWindowLongPtr _

        Lib 'user32.dll'Alias 'SetWindowLongPtrA' ( _

        ByVal hwnd As LongPtr, _

        ByVal nIndex As Long, _

        ByVal dwNewLong As LongPtr)As LongPtr

 

    Private Declare PtrSafeFunction FindWindowA _

        Lib 'user32.dll'( _

        ByVal lpClassName AsString, _

        ByVal lpWindowName AsString) As LongPtr

        

    Private Declare PtrSafeFunction DrawMenuBar _

        Lib 'user32.dll'( _

        ByVal hwnd As LongPtr) AsLong

#Else

    Private Declare FunctionGetWindowLongPtr _

        Lib 'user32.dll'Alias 'GetWindowLongA' ( _

        ByVal hwnd As Long, _

        ByVal nIndex As Long) AsLong

    

    Private Declare FunctionSetWindowLongPtr _

        Lib 'user32.dll'Alias 'SetWindowLongA' ( _

        ByVal hwnd As Long, _

        ByVal nIndex As Long, _

        ByVal dwNewLong As Long) As Long

 

    Private Declare FunctionFindWindowA _

        Lib 'user32.dll'( _

        ByVal lpClassName AsString, _

        ByVal lpWindowName AsString) As Long

        

    Private Declare FunctionDrawMenuBar _

        Lib 'user32.dll'( _

        ByVal hwnd As Long) As Long

#End If

 

Private Sub UserForm_Initialize()

    CreateMenu

End Sub

 

Private Sub CreateMenu()

    Const GWL_STYLE As Long = -16

    Const WS_SYSMENU As Long =&H80000

    Const WS_MINIMIZEBOX As Long =&H20000

    Const WS_MAXIMIZEBOX As Long =&H10000

    

    #If Win64 Then

        Dim lngFrmWndHdl As LongPtr

        Dim lngStyle As LongPtr

    #Else

        Dim lngFrmWndHdl As Long

        Dim lngStyle As Long

    #End If

    

    lngFrmWndHdl =FindWindowA(vbNullString, Me.Caption)

    

    lngStyle =GetWindowLongPtr(lngFrmWndHdl, GWL_STYLE)

    lngStyle = lngStyle OrWS_SYSMENU       'AddSystemMenu

    lngStyle = lngStyle OrWS_MINIMIZEBOX   'Add MinimizeBox

    lngStyle = lngStyle Or WS_MAXIMIZEBOX   'Add MaximizeBox

 

    SetWindowLongPtr lngFrmWndHdl,GWL_STYLE, lngStyle

    

    DrawMenuBar lngFrmWndHdl

End Sub

 

将上述代码放置在用户窗体代码模块中,运行后的效果如下图所示:


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Excel Excel 嵌入VB MDI窗体 如何避免新建表格Excel图标出现在状态栏
VBA 窗体之去除窗体关闭按钮
Excel黑科技 vba中用Inputbox对话框接受输入密码时显示为*
定制化窗体之闪烁窗体标题栏(2)
5行代码 把cad窗体镶入到自已的窗体
VB 窗体闪屏
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服