View Full Version : چسبیدن فرم به موس
سید حمید حق پرست
یک شنبه 07 اسفند 1390, 15:49 عصر
سلام دوستان و اساتید محترم
من میخوام وقتی فرمم اجرا شد فوری فرم به موس بچسبه و موس هر جا رفت فرم هم باهاش بره
خودم خیلی سعی کردم ولی نتونستم:گریه:
ممنون میشم راهنماییم کنید:قلب:
aria1o
یک شنبه 07 اسفند 1390, 16:06 عصر
ﻓﮑﺮ ﮐﻨﻢ ﺑﺎapi ﺑﺸﻪ.ﺍﻭﻝ ﻣﻮﻗﻌﯿﺖ ﻣﻮس ﺭﻭ ﻧﺴﺒﺖ ﺑﻪ ﻓﺮﻡ ﻣﺸﺨﺺ ﻣﯿﮑﻨﯽ ﺑﻌﺪ ﻣﯿﺎﺭﯾﺶ ﺭﻭﯼ ﻓﺮﻡ ﺑﻌﺪ ﻓﺮﻣانﮐﻠﯿﮏ ﺭﻭﺍﺟﺮﺍﯼ ﻣﯿﮑﻨﯽ.ﺍﻟﺒﺘﻪ ﺍﯾﻦ ﯾﻪ ﻧﻈﺮﻩ.ﺧﻮﺩﻡ ﺍﻵﻥ ﻣﻨﺰﻝ ﻧﯿﺴﺘﻢ ﮐﻪ ﺗﺴﺖ ﮐﻨﻢ...
سید حمید حق پرست
یک شنبه 07 اسفند 1390, 16:14 عصر
میشه نمونه کدی بزارید ممنون میشم
quiet_programmer
یک شنبه 07 اسفند 1390, 16:58 عصر
با سلام.
ﻓﮑﺮ ﮐﻨﻢ ﺑﺎapi ﺑﺸﻪ.ﺍﻭﻝ ﻣﻮﻗﻌﯿﺖ ﻣﻮس ﺭﻭ ﻧﺴﺒﺖ ﺑﻪ ﻓﺮﻡ ﻣﺸﺨﺺ ﻣﯿﮑﻨﯽ ﺑﻌﺪ ﻣﯿﺎﺭﯾﺶ ﺭﻭﯼ ﻓﺮﻡ ﺑﻌﺪ ﻓﺮﻣانﮐﻠﯿﮏ ﺭﻭﺍﺟﺮﺍﯼ ﻣﯿﮑﻨﯽ.ﺍﻟﺒﺘﻪ ﺍﯾﻦ ﯾﻪ ﻧﻈﺮﻩ.ﺧﻮﺩﻡ ﺍﻵﻥ ﻣﻨﺰﻝ ﻧﯿﺴﺘﻢ ﮐﻪ ﺗﺴﺖ ﮐﻨﻢ...
با توجه به فرمایش جناب aria1o این کد رو نوشتم. تنها کاری که باید انجام بدین قرار دادن یه تایمر روی فرم هست.
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function MoveWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Dim Coordinate As POINTAPI
Private Sub Form_Load()
Timer1.Interval = 1
End Sub
Private Sub Timer1_Timer()
GetCursorPos Coordinate
Me.Caption = Str(Coordinate.x) + ":" + Str(Coordinate.y)
retval = MoveWindow(Me.hwnd, Coordinate.x, Coordinate.y, 400, 400, 1)
End Sub
با اجرای این برنامه فرم همراه با حرکت موس حرکت خواهد کرد. برای اینکه بتونین پنجره های دیگه مثلا پنجره ی my computer رو به پوینتر موس بچسبونین از تابع API به نام FindWindow باید کمک بگیرین. شکل تعریف این تابع رو برات میزارم.
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
نحوه فراخوانی:(پیداکردن hwnd مربوط به پنجره Notepad) در صورتی که Notepad باز باشه یک مقدار غیر صفر برمیگردونه در غیر این صورت مقدار صفر
Dim lHwnd As Long
lHwnd = FindWindow("Notepad", vbNullString)
یاحق.
موفق باشید/
سید حمید حق پرست
یک شنبه 07 اسفند 1390, 17:11 عصر
ممنون از جوابتون . حالا روشی نیست که ما رو فرم یه پیکچر باکس بزاریم و وسط پیکچر باکس به موس بچسپه به جای گوشه فرم؟
سید حمید حق پرست
یک شنبه 07 اسفند 1390, 21:33 عصر
دوستان و اساتید کسی نیست کمکم کنه؟
Mr'Jamshidy
یک شنبه 07 اسفند 1390, 22:05 عصر
دوست عزیز چرا میشه باید مقتصاد رو بگیری و با یک جمع و تفریق ساده به مقسود خودت میرسی
مقتصاد چپ فرم = مقتصاد اشاره گر افقی - (عرض فرم تقسیم بر 2)
مقتصاد بالا فرم = مقتصاد عمودی - (طول فرم تقسیم بر 2)
این هم یک فرمول ساده (البته اول باید مقتصاد فرم رو به پیکسل برگردونی و در آخر دوباره به Twip برشگردونی مثل زیر
retval = MoveWindow(Me.hwnd, Coordinate.x, Coordinate.y, 400, 400, 1)
جایگزین
retval = MoveWindow(Me.hwnd, Coordinate.x - ((Me.Width / 15) / 2), Coordinate.y - ((Me.Height / 15) / 2), 400, 400, 1)
به همین سادگی با یک دو دو تا چهارتا میشه به جواب رسید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.