View Full Version : سوال: MIDI form تغییر  BorderStyle کمک کنید
  
digi_tal
جمعه 23 مرداد 1388, 19:36 عصر
با سلام 
لطفا اگه کسی در مورد تغییر در نمایش فرم های ام دی ای دره برام بنویسه 
من میخوام یه فرم با خاصیت MDIForm را به حال None نمایش بدم یعنی بدون کادر پنجره روشی هست ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟:عصبانی++:: یج:
Babak.Hassanpour
یک شنبه 25 مرداد 1388, 19:40 عصر
سلام
بفرما عزیز
توی خود فرم MDI  بریز:
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 Const GWL_STYLE = (-16)
Private Const WS_BORDER = &H800000
Private Const WS_CAPTION = &HC00000
Private Sub MDIForm_Load()
Dim lStyle As Long
  lStyle = GetWindowLong(MDIForm1.hwnd, GWL_STYLE) 'Get's the WindowLong
 ' lStyle = lStyle And Not WS_BORDER
 ' lStyle = lStyle And Not WS_BORDER
 ' lStyle = lStyle And Not WS_CAPTION
  lStyle = lStyle And WS_BORDER And Not WS_CAPTION
  
Call SetWindowLong(MDIForm1.hwnd, GWL_STYLE, lStyle)
End Sub
همونطور که میبینی lStyle  چند تا مد داره.هرکدوم رو خواستی ست کن
mirparsa
شنبه 21 شهریور 1388, 19:32 عصر
برای اینکه Border Style تو MDIForm بصورت Fix بشه چیکار میشه کرد؟
Babak.Hassanpour
شنبه 21 شهریور 1388, 19:45 عصر
این کد اصلاح شده برای خواسته شما عزیز جان
Option Explicit
Private Const GWL_STYLE = (-16)
Private Const WS_SYSMENU = &H80000
Private Const WS_CAPTION = &HC00000
Private Const WS_THICKFRAME = &H40000
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 Const WS_BORDER = &H800000
Public Sub EnableResizing(Form As Form, Enable As Boolean)
    Dim style As Long
    style = GetWindowLong(Form.hwnd, GWL_STYLE)
    If Enable Then
        style = style Or WS_THICKFRAME
    Else
        style = style And Not WS_THICKFRAME
    End If
    style = SetWindowLong(Form.hwnd, GWL_STYLE, style)
End Sub
Private Sub MDIForm_Load()
    Show
    EnableResizing Me, False
Dim lStyle As Long
  lStyle = GetWindowLong(MDIForm1.hwnd, GWL_STYLE) 'Get's the WindowLong
  lStyle = lStyle And Not WS_BORDER
 ' lStyle = lStyle And Not WS_BORDER
 ' lStyle = lStyle And Not WS_CAPTION
 ' lStyle = lStyle And WS_BORDER And Not WS_CAPTION
  
Call SetWindowLong(MDIForm1.hwnd, GWL_STYLE, lStyle)
End Sub
mirparsa
دوشنبه 23 شهریور 1388, 02:13 صبح
حالا یک مشکل جدید دارم :لبخند:
دکمه MDIForm ، Maximized  میشه غیرفعال کرد . با این کدی که دادیدResize  نمیشه ولی این بزرگ شدن فرم کارو خراب می کنه .:متفکر:
در واقع می خوام MaxButton براش  False بشه .
Babak.Hassanpour
دوشنبه 23 شهریور 1388, 20:51 عصر
این کد اصلاح شده برای خواسته جدید شما(قسمت بولد شده)
Option Explicit
Private Const WS_MINIMIZEBOX = &H20000
Private Const WS_MAXIMIZEBOX = &H10000
Private Const GWL_STYLE = (-16)
Private Const WS_SYSMENU = &H80000
Private Const WS_CAPTION = &HC00000
Private Const WS_THICKFRAME = &H40000
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 Const WS_BORDER = &H800000
Public Sub EnableResizing(Form As Form, Enable As Boolean)
    Dim style As Long
    style = GetWindowLong(Form.hwnd, GWL_STYLE)
    If Enable Then
        style = style Or WS_THICKFRAME
    Else
        style = style And Not WS_THICKFRAME
    End If
    style = SetWindowLong(Form.hwnd, GWL_STYLE, style)
End Sub
Private Sub MDIForm_Load()
    Show
    EnableResizing Me, False
Dim lStyle As Long
  lStyle = GetWindowLong(MDIForm1.hwnd, GWL_STYLE) 'Get's the WindowLong
 ' lStyle = lStyle And Not WS_BORDER
 ' lStyle = lStyle And Not WS_BORDER
 ' lStyle = lStyle And Not WS_CAPTION
 ' lStyle = lStyle And WS_BORDER And Not WS_CAPTION
  
Call SetWindowLong(MDIForm1.hwnd, GWL_STYLE, lStyle)
    Dim st As Long
    st = GetWindowLong(Me.hwnd, GWL_STYLE)
    st = (Not WS_MINIMIZEBOX) And st
    st = (Not WS_MAXIMIZEBOX) And st
    SetWindowLong Me.hwnd, GWL_STYLE, st
End Sub
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.