博文

目前显示的是 四月, 2007的博文

如何屏蔽窗体的"关闭按钮"?

最近写程序有个需求, 就是要屏蔽掉"关闭按钮". 通过Delphi的图形编辑很难实现这个要求. 我们不得不借助于API函数的帮助. 标题栏的右侧3个按钮,是和系统菜单(右键点击标题栏左侧图标弹出)相关联的.我们不可能将"关闭按钮"隐藏掉,只能禁用它. 其实当你将系统菜单中的"关闭"菜单删除掉, 你就会发现那个"关闭按钮"已经给禁用了. 好了,原理已经说了, 我们看看如何实现吧! 很简单! var hMenu : HMENU; begin hMenu := GetSystemMenu(Handle, False); RemoveMenu(hMenu, SC_CLOSE, MF_BYCOMMAND); end; 下面我们就看看两个API函数的作用. 正如他们的命名, 意思很直接. 1. 获取系统菜单 function GetSystemMenu(hWnd: HWND; bRevert: LoogBool): HMENU; 参数: hWnd -- 窗体的句柄; bRevert -- 制定一种操作. 如果为False, 函数返回当前窗体的系统菜单句柄; 如果为True, 函数将重置系统菜单回默认状态. 返回值: 如果bRevert为False,返回系统菜单句柄; 如果bRevert为True, 返回nil. 2. 移除一个菜单项 function RemoveMenu(hMenu: HMENU; uPosition: Cardinal; uFlags: Cardinal): LoogBool; 参数: hMenu -- 菜单句柄; uPosition -- 要删除菜单项的ID, 或者该菜单项位于菜单的位置, 具体意思根据uFlags决定; uFlags -- 决定上一个参数含义的参数,可以是MF_BYCOMMAND或者MF_BYPOSITION; 附加项: uPosition参数关于系统菜单操作可以有如下几种: SC_CLOSE SC_SIZE SC_MOVE SC_MINIMIZE SC_MAXINIZE