PDA

View Full Version : مشکل با دکمه maximized



amir_masoud
یک شنبه 13 دی 1383, 11:36 صبح
سلام
من از قطعه کد زیر برای غیر فعال ساختن دکمه maximized در فرم استفاده کردم ولی تویه ویندوز 98 جواب می ده و دکمه رو غیر فعال می کنه ولی تویه ویندوز xp این کار رو انجام نمی ده

Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, ByVal bRevert As Boolean) As Long
Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long

Public Sub EFF_DisableMenuBarButton(ByVal Form_hWnd As Long, MenuNumber As Long)
Dim hMenu As Long
Dim nCount As Long
Const MF_BYPOSITION = &H400&
Const MF_REMOVE = &H1000&

hMenu = GetSystemMenu(Form_hWnd, False)
nCount = GetMenuItemCount(hMenu)
RemoveMenu hMenu, MenuNumber, MF_REMOVE Or MF_BYPOSITION
DrawMenuBar Form_hWnd
End Sub


تویه فرم لود تابع رو صدا می زنم به همراه 4

ممنون می شم منو راهنمایی کنید
*** عنوان اصلاح شد (مسعود.غ) :sad2: ***

Behrouz_Rad
یک شنبه 13 دی 1383, 11:50 صبح
Try This Code

in a Module


Public Const SC_MAXIMIZE = &HF030&
Public Const MF_BYCOMMAND = &H0
Public Declare Function GetSystemMenu Lib "user32" _
(ByVal hwnd As Long, ByVal bRevert As Long) As Long
Public Declare Function DeleteMenu Lib "user32" _
(ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long

in a Form


Public Sub DisableXbutton(ByVal frmHwnd As Long)
Dim hMenu As Long
hMenu = GetSystemMenu(frmHwnd, 0&)
If hMenu Then
Call DeleteMenu(hMenu, SC_MAXIMIZE, MF_BYCOMMAND)
DrawMenuBar (frmHwnd)
End If
End Sub

Private Sub Form_Load()
DisableXbutton (Me.hwnd)
End Sub


Good Luck
:wise1:

vbprogramer
یک شنبه 13 دی 1383, 14:32 عصر
Try This Code

آقای راد این کد کار نکرد یعنی دکمه maximize رو غیر فعال نکرد و فقط کاربر نمی تونه از طریق دوبار کلیک روی نوار عنوان فرم رو maximize کنه


دوست عزیز چرا از خاصیت Maxbutton خود فرم استفاده نمی کنید ؟

amir_masoud
یک شنبه 13 دی 1383, 23:09 عصر
ممنون
دوست عزیز این خاصیت برای فرمهای mdi بصورت معمول و از طریق ÷نجره تنظیمان وجود نداره . :(

vbprogramer
دوشنبه 14 دی 1383, 07:29 صبح
آهان فهمیدم :موفق:

Behrouz_Rad
دوشنبه 14 دی 1383, 08:10 صبح
آها واسه فرم های MDI فرق می کنه:

in a Module


Public Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long


Public Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Public Const SC_MAXIMIZE = &HF030&
Public Const MF_BYCOMMAND = &H0&

in a Form


Private Sub Form_Load()
Dim hSysMenu As Long
hSysMenu = GetSystemMenu(hWnd, False)
RemoveMenu hSysMenu, SC_MAXIMIZE, MF_BYCOMMAND
End Sub


:wink: :wise1:

amir_masoud
چهارشنبه 16 دی 1383, 18:26 عصر
سلام
من با این قطعه کد هم امتحان کردم ولی جواب نمی ده

Ahmad-VB
پنج شنبه 17 دی 1383, 09:07 صبح
این کد مشکلتون رو حل می کنه !


'************************************************* *************
' Program: Disable Max and Min Buttons on a Mdi Form Sample
' Author: Sorcerer
' Build Date: 11/08/2004
'
' Desription: I looked all over PSC and other sites to find out how
' to do this finally found it. So I decided I would write
' a demo on how to do it. I do not know who was the original
' author of this code.
'
'
' Inputs: none
'
' ************************************************** ***************



'Remove this code if you do not want to disable the Min Button
Private Const WS_MINIMIZEBOX = &H20000 'Disables the Minimize Button

'Remove this code if you do not want to disable the Max Button
Private Const WS_MAXIMIZEBOX = &H10000 'Disables Maximize Button


Private Const GWL_STYLE = (-16)

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 GetWindowLong Lib "user32" Alias _
"GetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long) As Long


Private Sub MDIForm_Load()
Dim L As Long

L = GetWindowLong(Me.hwnd, GWL_STYLE)

'Remove this code if you do not want to disable the Min Button
' L = L And Not (WS_MINIMIZEBOX) 'Disables the Minimize Button

'Remove this code if you do not want to disable the Min Button
L = L And Not (WS_MAXIMIZEBOX) 'Disables Maximize Button

L = SetWindowLong(Me.hwnd, GWL_STYLE, L)

End Sub

hbi
پنج شنبه 17 دی 1383, 19:23 عصر
کد زیر را در یک ماژول قرار بده


Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, ByVal bRevert As Boolean) As Long
Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long

Public Sub EFF_DisableMenuBarButton(ByVal Form_hWnd As Long, MenuNumber As Long)
Dim hMenu As Long
Dim nCount As Long
Const MF_BYPOSITION = &H400&
Const MF_REMOVE = &H1000&

hMenu = GetSystemMenu(Form_hWnd, False)
nCount = GetMenuItemCount(hMenu)
RemoveMenu hMenu, MenuNumber, MF_REMOVE Or MF_BYPOSITION
DrawMenuBar Form_hWnd
End Sub

حالا در لود mdi form کد زیر را قرار بده


EFF_DisableMenuBarButton Me.hWnd, 0
'Restore = 0
'Move = 1
'Size = 2
'Minimize = 3
'Maximize = 4
هر دکمه را که بخواهی غیر فعال میکند