动态屏蔽最大化按钮?

cqs76 2003-08-25 11:56:42
Option Explicit
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function GetMenuString Lib "user32" Alias "GetMenuStringA" (ByVal hMenu As Long, ByVal wIDItem As Long, ByVal lpString As String, ByVal nMaxCount As Long, ByVal wFlag As Long) As Long
Private 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 hMenu As Long
Private CloseStr As String
Const WM_NCLBUTTONDBLCLK = &HA3
Const WM_NCLBUTTONDOWN = &HA1
Const HTCAPTION = 2
Const MF_STRING = &H0&
Const MF_BYCOMMAND = &H0&
Const SC_CLOSE = &HF060
Const SC_MAXIMIZE = &HF030&

Private Sub Command2_Click()
hMenu = GetSystemMenu(form1.hwnd, 0)
CloseStr = String(255, 0)
GetMenuString hMenu, SC_MAXIMIZE, CloseStr, 256, MF_BYCOMMAND
CloseStr = Left(CloseStr, InStr(1, CloseStr, Chr(0)) - 1)
DeleteMenu hMenu, SC_MAXIMIZE, MF_BYCOMMAND
SendMessage hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
End Sub

现在做下来屏蔽的是关闭按钮(成灰色),而不是最大化成灰色,我不知要在那儿改??
...全文
95 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihonggen0 2003-08-25
  • 打赏
  • 举报
回复
在设计时设置MaxButton属性为False
liul17 2003-08-25
  • 打赏
  • 举报
回复
窗体的MaxButton属性为False即可
射天狼 2003-08-25
  • 打赏
  • 举报
回复
Option Explicit


Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Const MF_BYPOSITION = &H400&
Const MF_REMOVE = &H1000&
Const SC_CLOSE = &HF060
Const WS_MINIMIZEBOX = &H20000
Const WS_MAXIMIZEBOX = &H10000
Const GWL_STYLE = (-16)

Private Sub Command1_Click()
Dim TempLng As Long

RemoveMenu GetSystemMenu(Me.hwnd, 0), SC_CLOSE, MF_REMOVE


TempLng = GetWindowLong(Me.hwnd, GWL_STYLE)

TempLng = TempLng And Not WS_MINIMIZEBOX '最小化

TempLng = TempLng And Not WS_MAXIMIZEBOX '最大化

SetWindowLong Me.hwnd, GWL_STYLE, TempLng
End Sub
hxy2003 2003-08-25
  • 打赏
  • 举报
回复
DeleteMenu hMenu, SC_MAXIMIZE, MF_BYCOMMAND
minghui000 2003-08-25
  • 打赏
  • 举报
回复
啊!
Alicky 2003-08-25
  • 打赏
  • 举报
回复
up

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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