Lihat pada gambar berikut ini :

Setelah kita klik icon form yang berada pada sudut atas sebelah kiri, akan muncul menu pada control box. Untuk menambahkan menu tersebut, silahkan ikuti langkah-langkah berikut :
Object yang diperlukan :
1 Buah Form
1 Buah Module
Masukkan kode dibawah ini pada Module1 (Code) :
[sourcecode language='vb']
Option Explicit
Public Const WM_SYSCOMMAND As Long = &H112&
Public Const IDM_ABOUT As Long = 1&
Public Const IDM_WHO As Long = 2&
Public procOld As Long
Public Declare Function CallWindowProc& Lib “user32″ Alias “CallWindowProcA” (ByVal lpPrevWndFunc&, _
ByVal hWnd&, ByVal Msg&, ByVal wParam&, ByVal lParam&)Public Function MenuProc(ByVal hWnd As Long, ByVal iMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case iMsg
Case WM_SYSCOMMAND
If wParam = IDM_ABOUT Then _
MsgBox “Contoh isi menu Programmer”, _
vbInformation, “Menu Programmer”If wParam = IDM_WHO Then _
MsgBox “Contoh isi Custom Menu”, _
vbInformation, “Custom Menu”
End Select
MenuProc = CallWindowProc(procOld, hWnd, iMsg, wParam, lParam)
End Function
[/sourcecode]Masukkan kode dibawah ini pada Form1 (Code) :
[sourcecode language='vb']
Option Explicit
Private Const SC_SIZE As Long = &HF000&
Private Const SC_MOVE As Long = &HF010&
Private Const SC_CLOSE As Long = &HF060&
Private Const SC_MINIMIZE As Long = &HF020&
Private Const SC_MAXIMIZE As Long = &HF030&
Private Const SC_NEXTWINDOW As Long = &HF040&
Private Const SC_PREVWINDOW As Long = &HF050&
Private Const MF_BYCOMMAND As Long = &H0&
Private Const MF_STRING As Long = &H0&
Private Const MF_SEPARATOR As Long = &H800&
Private Const GWL_WNDPROC As Long = (-4&)
Private Declare Function GetSystemMenu& Lib “user32″ (ByVal hWnd&, ByVal bRevert&)
Private Declare Function DeleteMenu& Lib “user32″ (ByVal hMenu&, _
ByVal nPosition&, ByVal wFlags&)Private Declare Function AppendMenu& Lib “user32″ Alias “AppendMenuA” (ByVal hMenu&, _
ByVal wFlags&, ByVal wIDNewItem&, lpNewItem As Any)Private Declare Function SetWindowLong& Lib “user32″ Alias “SetWindowLongA” (ByVal hWnd&, _
ByVal nIndex&, ByVal dwNewLong&)Private Sub Command1_Click()
Unload Me
End SubPrivate Sub Form_Load()
Screen.MousePointer = vbHourglass
Dim hSysMenu&
hSysMenu = GetSystemMenu(hWnd, False)
Call DeleteMenu(hSysMenu, SC_CLOSE, MF_BYCOMMAND)
Call DeleteMenu(hSysMenu, SC_SIZE, MF_BYCOMMAND)
Call DeleteMenu(hSysMenu, SC_MOVE, MF_BYCOMMAND)
Call DeleteMenu(hSysMenu, SC_MAXIMIZE, MF_BYCOMMAND)
Call AppendMenu(hSysMenu, MF_STRING, IDM_ABOUT, ByVal “&Programmer”)
Call AppendMenu(hSysMenu, MF_SEPARATOR, False, ByVal 0&)
Call AppendMenu(hSysMenu, MF_STRING, IDM_WHO, ByVal “&Contoh Custom Menu”)
procOld = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf MenuProc)
Screen.MousePointer = vbDefaultcantgetsysmenu:
If Err Then
Err.Clear
MsgBox “Tidak bisa menambahkan menu”, vbExclamation, “Menu System”
Resume cantgetsysmenu
End If
End SubPrivate Sub Form_Unload(Cancel As Integer)
Call SetWindowLong(hWnd, GWL_WNDPROC, procOld)
End Sub
[/sourcecode]
claim token : 6GUB32BQMUMS


