این برنامه به درخواست یکی از دوستان بوده

18 دی 1393
این برنامه به درخواست یکی از دوستان بوده که نشان می دهد چگونه فرم هایی بصورت دایره و یا بیضی در ویژوال بیسیک طراحی کنیم . خوب ایتدا به فراخوانی توابع مورد نیاز ویندوز می پردازیم :

PrivateDeclare 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 در نظر بگیرید)


ارسال دیدگاه

خطا ...
آدرس ایمیل وارد شده نامعتبر است.
متوجه شدم