ش | ی | د | س | چ | پ | ج |
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Class Module Name : clsmMouseWheel
Private frm As Object
Private intCancel As Integer
Public Event MouseWheel(Cancel As Integer)
' Because Form is object use set
Public Property Set Form(frmm As Object)
Set frm=frmm
End Property
Public Property Get MouseWheelCancel() As Integer
MouseWheelCancel=intCancel
End Property
Public Sub RaiseMouseWheel()
RaiseEvent MouseWheel(intCancel)
End Sub
در استاندارد ماژول ، متغیری به صورت Public تعریف می شود که در تمام رویه ها بتوان استفاده کرد حتی در سایر استاندارد ماژول ها ( یعنی در تمام رویدادهای فرم و گزارش می توان از این متغیر استفاده کرد حتی در کنترل تکست باکس یا قسمت تکست باکس کنترل کمبو باکس مثل ایجاد TempVars .... و این متغیر به کلاس ماژول ساخته شده متصل می شود.نام استاندارد ماژول را MouseWheel می نامیم
Public cMouse As clsmMouseWheel
در قسمت ویژوال فرم مورد نظر عبارت زیر نوشته می شود.بالاتر از هر تعداد Event که در رویه وجود دارد.
Private WithEvents clsMouseWheel As MouseWheel.clsmMouseWheel
باید متغیر های WithEvents را بعنوان متغیرهای آبجکت اعلام کنید تا بتوانند نمونه های کلاس را پذیرش کنند . با این حال نمی توان آنها را بعنوان Object اعلام کرد . باید آنها را به عنوان کلاس خاصی که می تواند رویدادها را مطرح کند ، اظهار نمائید.
شئ هایی که از روی کلاس ساخته میشوند را یک نمونه (Instance) از آن کلاس مینامند.
WithEvents مشخص میکند که یک یا چند متغیر عضو اعلام شده به نمونه ای از یک کلاس اشاره می کند که می تواند رویدادها را افزایش دهد.
فرضا می خواهید رویدادهایی ( رویدادها را می دانید ) که برای کنترل webbrowser وجود دارد را اجرا کنید با WithEvents متغیری را تعریف می کنید که به آن کلاس ماژول متصل شود و بعد یک رویه می نویسید.
در رویداد لود فرم باید متغیر تعریف شده بالا را به کلاس ماژول نوشته شده تنظیم کرد
Set clsMouseWheel=New MouseWheel.clsmMouseWheel
Set clsMouseWheel.Form=Me
در اینجا می توان تابعی که در استاندارد ماژول تعریف کردید را اجرا کنید مثل
clsMouseWheel.SubMsgForm
در رویداد کلوز فرم :
فرضا اجرای تابعی از استاندارد ماژول مثلا برای قطع زنجیره ارتباطی
Set clsMouseWheel.Form=nothing
Set clsMouseWheel=Nothing
Private Sub clsMouseWheel_MouseWheel(Cancel As Integer)
Msgbox " Hello"
Cancel=True
End Sub
hook کردن یا به زنجیر کشیدن پنجره برای ارسال پیام های ویندوزی
برای hook کردن پنجره از تابع SetWindowLongPtrA استفاده کنید
HookForm :
SetWindowLongPtrA
oldWndProc
frm.hwnd GWL_WNDPROC AddressOf WndProc
Set Mouse=Me
برای قطع اتصال به پنجره باید Unhook کرد با استفاده از همان تابع ( البته از توابع SetWindowsHookA برای تنظیم این زنجیره و قطع آن با UnHookWindowsHookEx استفاده می کنند.) که در پارامتر lparam تابع oldWndProc جایگزین می شود.
تابعی هم برای پارامتر دوم تابع SetWindowLongPtrA می نویسید که اینجا wndProc نامیده شده یا می توانید نام آنرا WindowsHook بگذارید . که شامل چهار آرگومان hwnd Msg wParam lParam است.اولی هندل پنجره را مشخص میکند که دیتاتایپ آن در ویندوز 64 بیت LongPtr است
Public Function WndHookProc(ByVal hWnd As LongPtr,ByVal wParam As LongPtr,ByVal lParam As LongPtr) As Long
Select Case Msg
Case WM_MOUSEWHEEL
WndHookProc=CallWindowProc(oldWndProc,hWnd,Msg,wParam,lParam)
Case Else
WndHookProc=CallWindowProc(oldWndProc,hWnd,Msg,wParam,lParam)
End Function
MouseWheel ( Page , Count ) در اکسس
WithEvents
Get بازگشت مقدار پراپرتی و WriteOnly است
Set ذخیره مقدار پراپرتی و ReadOnly است
Get
property procedure that is used to return the value of the property.
Set
property procedure that is used to store the value of the property.
در لود فرم Set mfrm=Me البته قبلش باید کلاس را تعریف کرد