如何禁止系统菜单中的关闭按钮(即X),即最小化与最大化右侧的那一个。

sxdtzhp 2002-12-15 10:42:53
如何禁止系统菜单中的关闭按钮(即X),即最小化与最大化右侧的那一个。
...全文
65 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
TangMingTM 2002-12-22
  • 打赏
  • 举报
回复
有时候也可以没有那么复杂,比如你设置一个实例变量ii_close = 0,在closequery事件中查询ii_close,如果是0则Message.ReturnValue = 1即不进行任何操作,当你想关闭窗口的时候,设置ii_close = 1后执行Close(“WindowName”)。
archerhe 2002-12-20
  • 打赏
  • 举报
回复
完全同意楼上!
现贴出pb代码!
FUNCTION ulong DeleteMenu(ulong hMenu,ulong nPosition,ulong wFlags) LIBRARY "user32.dll"

FUNCTION ulong GetMenuItemCount(ulong hMenu) LIBRARY "user32.dll"

FUNCTION ulong GetSystemMenu(ulong hwnd,ulong bRevert) LIBRARY "user32.dll"
//屏蔽window中的关闭按钮
long MF_BYPOSITION =1024
Long hwndMenu
Long c,value

hwndMenu = GetSystemMenu(handle(this), 0)
c = GetMenuItemCount(hwndMenu)
value=DeleteMenu (hwndMenu, c - 1, MF_BYPOSITION)
balloonman2002 2002-12-16
  • 打赏
  • 举报
回复
把下述代码改成PB即可,可行的,以前我改过,可现在找不到代码了:

Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long

Private Const MF_BYPOSITION = &H400&
Private Sub Form_Load()
Dim hwndMenu As Long
Dim c As Long
hwndMenu = GetSystemMenu(Me.hwnd, 0)
c = GetMenuItemCount(hwndMenu)
DeleteMenu hwndMenu, c - 1, MF_BYPOSITION
c = GetMenuItemCount(hwndMenu)
DeleteMenu hwndMenu, c - 1, MF_BYPOSITION
End Sub

680

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder API 调用
社区管理员
  • API 调用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧