Access911.net   |   a9BBS   |   OTaA System  
  搜索文章:  
Access911欢迎您光临  
   主页      上传      繁體版       论坛     
设为首页  |  加入收藏   
  
你现在的位置:文章索引 -> 文章分类 -> API  
 首页|  近日更新|  下载  |  文章索引  |  搜索|  术语|  承接工程|  
 
系统正在加载内容,请耐心等待...
 
 查询
 窗体
 报表
 
 
 VBA
 函数
 ADO/DAO/ADO.NET
 API
 ADP
 安全
 发布
 OA
 ASP/ASP.NET
 其他语言
 控件
 DELPHI
 C#/.Net
 本站
 其他
 小例程
 常用软件
 参考文档
 业主作品
 网友大作
 
 
友情链接
 access911.net
 
访问人次
 1702108
 
站长 E-Mail
 net911@sina.com
 access911@gmail.com
 
RSS 订阅

显示附加信息 >>>

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

作者:cg1  摘自:access911.net  :cg1  更新日期:2005-5-12  浏览人次:

 

问题:

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

 

回答:

全部都是调用了 DeleteMenu 这个 API 函数

如何调用API函数来屏蔽窗体上的还原按钮? 

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


 


本站文章旨在为该问题提供解决思路及关键性代码,并不能完成应该由网友自己完成的所有工作,请网友在仔细看文章并理解思路的基础上举一反三、灵活运用。

access911.net 原创文章,作者本人对文章保留一切权利。
如需转载必须征得作者同意并注明本站链接

 

 
相关文章
     没有手动相关文章
     如何禁止Access主窗体右上角的退出按钮?(用代码使ACCESS主窗体上的"X"失效)
     如何最大化、最小化、隐藏Access主窗口;如何隐藏access数据库窗体
     如何判断 ACCESS 中的窗体,或者ACCESS主窗体的缩放状态,是否最大化是否最小化?
     关于 ASP 变量的生命周期,CONNECTION 关闭的问题
     如何去掉 MDI 子窗体的恢复还原按钮?
     如何关闭一个进程
     如何用access开一个ie窗口,然后再关闭?
     如何隐藏或最小化access数据库窗口
     如何关闭已经打开的所有窗体?
     如何禁止/屏蔽docmd.runsql执行查询时的提示?
 
评论
     查看或发表更多的评论,请单击这里。
 
 
 
 
 
   
  Access911.net   |   a9BBS   |   OTaA System   |
建站日期:2000年4月2日  |  设计施工:陈格 ( access911 & cg1 )
 Copyright © 2000 - 2003 COMET, 陈格 保留所有权利