如何使access主窗体右上角的一些按钮失效(如关闭、最大化、最小化、还原)-爱在深秋
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-窗体/数据页


如何使access主窗体右上角的一些按钮失效(如关闭、最大化、最小化、还原)

发表时间:2009/4/11 16:30:49 评论(4) 浏览(16987)  评论 | 加入收藏 | 复制
   
摘 要:如何使ACCESS主窗体右上角的一些按钮失效(如关闭、最大化、最小化、还原)
正 文:
Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, _
                                                                                                         ByVal wFlags As Long) As Long 
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, _
                                                                                                         ByVal bRevert As Long) As Long 
Private Const MF_BYCOMMAND = &H0& 
Private Const SC_MAXIMIZE = &HF030 
Private Const SC_RESTORE = &HF120
Private Const SC_SIZE = &HF000
Private Const SC_MOVE = &HF010
Private Const SC_MINIMIZE = &HF020
Private Const SC_CLOSE = &HF060
 
'以上代码放在声明段     

 

Dim hMenu As Long, Success As Long 
hMenu = GetSystemMenu(Application.hWndAccessApp, 0) 
'禁止还原按钮
Success = DeleteMenu(hMenu, SC_RESTORE, MF_BYCOMMAND) 
'禁止改变大小
Success = DeleteMenu(hMenu, SC_SIZE, MF_BYCOMMAND) 
'禁止最大化
Success = DeleteMenu(hMenu, SC_MAXIMIZE, MF_BYCOMMAND) 
'禁止最小化
Success = DeleteMenu(hMenu, SC_MINIMIZE, MF_BYCOMMAND) 
'禁止关闭
Success = DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND) 
'禁止移动
Success = DeleteMenu(hMenu, SC_MOVE, MF_BYCOMMAND) 


如果要用 API 函数去实现上述操作应该使用 SENDMESSAGE 函数

Public Const WM_SYSCOMMAND = &H112
Public Const SC_CLOSE = &HF060& '关闭窗体
Public Const SC_MINIMIZE = &HF020& '最小化窗体
Public Const SC_MAXIMIZE = &HF030& '最大化窗体
Public Const SC_RESTORE = &HF120& '恢复窗体大小
Public Const WM_SETTEXT = &HC '设置窗体的Caption
Public Const WM_GETTEXT = &HD '取得窗体的caption
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 Sub Command_Click(Index As Integer)
    Dim S As String
    S = String(80, Chr(0))

    Select Case Index
        Case 0
            SendMessage Application.hWndAccessApp, WM_GETTEXT, Len(S), ByVal S '读出窗体的Caption
            '在用户自己的窗体中加一个文本框,用于操作ACCESS主窗体标题
            Text1.Text = Left(S, InStr(S, Chr(0)) - 1)
        Case 1
            '因为Text1.text属于Variant类型,所以一定先要用CStr把它转换成字符串
            SendMessage Application.hWndAccessApp, WM_SETTEXT, 0, ByVal CStr(Text1.Text)    '设置窗体的Caption
        Case 2
            SendMessage Application.hWndAccessApp, WM_SYSCOMMAND, SC_MAXIMIZE, ByVal 0&'使窗体最大化
        Case 3
            SendMessage Application.hWndAccessApp, WM_SYSCOMMAND, SC_MINIMIZE, ByVal 0&'使窗体最小化
        Case 4
            SendMessage Application.hWndAccessApp, WM_SYSCOMMAND, SC_RESTORE, ByVal 0&'使窗体恢复原来的大小
        Case 5
            SendMessage Application.hWndAccessApp, WM_SYSCOMMAND, SC_CLOSE, ByVal 0&'关闭窗体
        End Select
End Sub


Access软件网交流QQ群(群号:198465573)
 
 相关文章
[FAQ]去掉XP窗体右上角的帮助框   【竹笛  2004/4/29】
用代码禁止关闭按钮,即数据库窗口右上角的“X”失效  【竹笛  2007/10/27】
如何使access主窗体右上角的一些按钮失效  【phs2007  2010/8/26】
常见问答
技术分类
相关资源
文章搜索
关于作者

爱在深秋

文章分类

文章存档

友情链接