PDA

View Full Version : مقاله: درستن کردن فرم هایی به شکل دایره یا بیضی



MBG73
جمعه 28 فروردین 1388, 14:41 عصر
سلام دوستان , این برنامه نشان می دهد چگونه فرم هایی بصورت دایره و یا بیضی در ویژوال بیسیک طراحی کنیم . خوب ایتدا به فراخوانی توابع مورد نیاز ویندوز می پردازیم :

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 Declare Function ReleaseCapture Lib "USER32" () As Long
Private Declare Function CreateEllipticRgn Lib "gdi32" _
(ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, _
ByVal Y2 As Long) As Long
Private Declare Function SetWindowRgn Lib "USER32" _
(ByVal hWnd As Long, ByVal hRgn As Long, _
ByVal bRedraw As Boolean) As Long

خوب اکنون کد زیر را در رویداد (Event) مربوط به لحظه ای که کلید موس را بروی فرم فشردیم قرار می دهیم تا بتوانیم با فشردن موس در هر جای فرم به راحتی آن را جابجا کنیم .


Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
MousePointer = 15
Call ReleaseCapture
Call SendMessage(hWnd, &HA1, 2, 0&)
MousePointer = 1
End Sub

حال تابع SetWindowRgn را مقدار دهی میکنیم . ( این قطعه کد را در رویداد Form_Load بنویسید ) :

SetWindowRgn hWnd, CreateEllipticRgn(0, 0, 200, 200), True

مثلا مقادیر 200 و 200 شکل فرم بصورت دایره در می آید برای شکل بیضی شما میتوانید این مقادیر را 200 و 300 اختیار کنید .( بهتر است که خاصیت boarderStyle را 0-None در نظر بگیرید)


نظر یادتون نره !! :لبخندساده: :چشمک: :قلب:

salehbagheri
جمعه 28 فروردین 1388, 20:03 عصر
به نظر شما با Region ها نميشه اين كار رو بسيار ساده تر از اين انجام داد؟

(يه احساسي به من ميگه كه اين كدها براي VB6 هست نه VB.NET)

arman_Delta2002
شنبه 29 فروردین 1388, 23:35 عصر
به نظر شما با Region ها نميشه اين كار رو بسيار ساده تر از اين انجام داد؟

(يه احساسي به من ميگه كه اين كدها براي VB6 هست نه VB.NET)

احساست بهت راستش رو گفته این کد VB6 چون با دات نت نمیخواد حتی یک خط کد بنویسی

khz-web1
دوشنبه 31 فروردین 1388, 15:14 عصر
http://www.codeproject.com/KB/vb/splforms.aspx

این هم یه مقاله دیگه .....

رضا نانوا
پنج شنبه 14 خرداد 1388, 04:25 صبح
VB.NETاینهم یه نمونه با