SSubTmr6.dll merupakan komponen yang dibuat oleh Steve McMahon. Tujuan utamanya adalah untuk mengimplementasikan subclassing dengan mudah, stabil, dan aman. Selengkapnya bisa Anda baca disini.
Di bawah ini merupakan langkah mudah cara menggunakan komponen subclassing SSubTmr6.dll. Setelah menambahkan referensi dll SSubTmr6.dll (vbAccelerator VB6 Subclassing And Timer Assistant...) selanjutnya, buatlah kerangkan kodenya seperti di bawah ini:
Option Explicit
'--------------------------------------------------------------------------
' http://khoiriyyah.blogspot.com
' kerangka kode Subclassing SSubTmr6.dll Steve McMahon
'--------------------------------------------------------------------------
Dim GSubclass As New GSubclass
Implements ISubclass
Private Property Let ISubclass_MsgResponse(ByVal RHS As SSubTimer6.EMsgResponse)
'Kode ini boleh dikosongkan tetapi tidak boleh dihapus
End Property
Private Property Get ISubclass_MsgResponse() As SSubTimer6.EMsgResponse
'Kode ini boleh dikosongkan tetapi tidak boleh dihapus
End Property
Private Function ISubclass_WindowProc(ByVal hwnd As Long, ByVal iMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case iMsg
Case Message1
Case Message2
Case Etc
End Select
End Function
Di bawah ini merupakan contoh paling sederhana subclassing menggunakan komponen SSubTmr6.dll. Kode di bawah, digunakan untuk mengganti menu yang ditampilkan pada saat mengklik kanan komponen TextBox standar:
Option Explicit
'--------------------------------------------------------------------------
' http://khoiriyyah.blogspot.com
' kerangka kode Subclassing SSubTmr6.dll Steve McMahon
'--------------------------------------------------------------------------
Dim GSubclass As New GSubclass
Implements ISubclass
'message windows yang akan dilampirkan (klik kanan)
Private Const WM_RBUTTONUP = &H205
Private Property Let ISubclass_MsgResponse(ByVal RHS As SSubTimer6.EMsgResponse)
'Kode ini boleh dikosongkan tetapi tidak boleh dihapus
End Property
Private Property Get ISubclass_MsgResponse() As SSubTimer6.EMsgResponse
'Kode ini boleh dikosongkan tetapi tidak boleh dihapus
End Property
Private Sub Form_Load()
'melampirkan message WM_RBUTTONUP-nya Text1 pada komponen
GSubclass.AttachMessage Me, Text1.hwnd, WM_RBUTTONUP
End Sub
Private Sub Form_Unload(Cancel As Integer)
'menghilangkan message WM_RBUTTONUP-nya Text1 dari komponen
GSubclass.DetachMessage Me, Text1.hwnd, WM_RBUTTONUP
Set GSubclass = Nothing 'bersihkan memory
End Sub
Private Function ISubclass_WindowProc(ByVal hwnd As Long, ByVal iMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case iMsg
Case WM_RBUTTONUP
'tampilkan menu mnuTest pada saat klik kanan di Text1
PopupMenu mnuTest
End Select
End Function
Maka sekarang, pada saat kita mengklik kanan TextBox diganti menjadi seperti gambar di bawah ini:
Gambar: Menu klik kanan default yang terdapat pada TextBox kita ganti dengan menu buatan kita sendiri |