PDA

View Full Version : حذف کردن Border فرم MDI



bachemosbat
دوشنبه 25 مهر 1384, 04:11 صبح
چگونه می توان بردر فرم MDI را حذف کرد به طوری که فرم MDI بدون بردر و به صورت تمام صفحه نمایش داده شود؟

mRizvandi
دوشنبه 25 مهر 1384, 08:01 صبح
سلام

شما می تونی از تابع API به نام SetWindowLong استفاده کنی و border فرم رو حذف کنی.
یه پیشنهاد دیگه اینکه می تونی به جای MDI از یک فرم معمولی استفاده کنی که میشه Border اون رو به هر شکلی دراورد بعد مابقی فرمها رو با استفاده از setParent داخل فرم بندازی
;-)

bachemosbat
سه شنبه 26 مهر 1384, 03:42 صبح
SetWindowLong رو توی MSDN نگاه کردم حالا باید چه آرگومانی رو به چی تنظیم کنم؟

mRizvandi
سه شنبه 26 مهر 1384, 08:30 صبح
سلام

شما اول باید با استفاده از تابع GetWindowLong شکل Style فرم رو بدست بیاری (مقدار برگشتی رو باید نگه داری)
بعد تابع SetWindowLong رو با پارامترهای زیر برای ست کردن شکل جدید فرم اجرا کن:
lRet = SetWindowLong (MdiFormHwnd, GWL_STYLE, NewStyle)
که NewStyle می تونه یکی از موار Style باشه که در MSDN لیست کاملش هست
اما:
اگر شما بخواید Border رو حذف کنید چون کلاس پنجره MDI با پنجره های عادی فرق داره Titlebar هم حذف میشه
این کد رو امتحان کن:

Call SetWindowLong(Me.hwnd, GWL_STYLE, 0)

این هم یک مثال برای تغییر دادن Style پنجره:


Dim lret As Long

lret = GetWindowLong(Me.hwnd, GWL_STYLE)
Call SetWindowLong(Me.hwnd, GWL_STYLE, lret Or WS_BORDER)

bachemosbat
سه شنبه 26 مهر 1384, 22:02 عصر
ممنون از راهنماییتون