Click to See Complete Forum and Search --> : How to hide the system menu??/


mlb
June 13th, 2001, 03:23 PM
Given a Handle to a window, how do i turn off the System Menu.. (for eg., to hide the Max, Min, Move, close buttons)???

phil m
June 13th, 2001, 04:06 PM
I've seen this at www.VB-helper

Go to the HOW TO section and use search. You should find a neat little beast

I'll have a look for it in the mean time

Phil

phil m
June 13th, 2001, 04:10 PM
Special thanks to Rod Stevens and Vb helper for this code


Option Explicit

Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long

Private Const MF_BYPOSITION = &H400&

Private Sub RemoveMenus(frm As Form, _
remove_restore As Boolean, _
remove_move As Boolean, _
remove_size As Boolean, _
remove_minimize As Boolean, _
remove_maximize As Boolean, _
remove_seperator As Boolean, _
remove_close As Boolean)
Dim hMenu As Long

' Get the form's system menu handle.
hMenu = GetSystemMenu(hwnd, False)

If remove_close Then DeleteMenu hMenu, 6, MF_BYPOSITION
If remove_seperator Then DeleteMenu hMenu, 5, MF_BYPOSITION
If remove_maximize Then DeleteMenu hMenu, 4, MF_BYPOSITION
If remove_minimize Then DeleteMenu hMenu, 3, MF_BYPOSITION
If remove_size Then DeleteMenu hMenu, 2, MF_BYPOSITION
If remove_move Then DeleteMenu hMenu, 1, MF_BYPOSITION
If remove_restore Then DeleteMenu hMenu, 0, MF_BYPOSITION
End Sub

Private Sub Form_Load()
RemoveMenus Me, False, False, _
False, True, True, _
False, False
End Sub

Phil

mlb
June 13th, 2001, 04:57 PM
Phil,

I tried looking up the website u mentioned, there doesn't seem to be a search engine???

phil m
June 13th, 2001, 06:38 PM
There is a search eng there and I used it. Se my mail above as I went there, used the eng and found the program. It's posted on the other mail.

I do agree that the search eng is not easy to find but press HOW TO and look on the right hand side of the screen - it is there

good luck

Phil

Cubbie
June 14th, 2001, 07:30 AM
Try the following:

Put in a mnodule or Private these in the general declations of a form.


public Declare Function GetSystemMenu Lib "user32" (byval hwnd as Long, byval bRevert as Long) as Long
public Declare Function DeleteMenu Lib "user32" (byval hMenu as Long, byval nPosition as Long, byval wFlags as Long) as Long
public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (byval hwnd as Long, byval wMsg as Long, byval wParam as Long, lParam as Long) as Long
public Const SC_CLOSE = &HF060
public Const SC_MOVE = &HF010
public Const SC_SIZE = &HF000
public Const MF_BYCOMMAND = &H0&
public Const WM_NCACTIVATE = &H86
public Const SC_MINIMIZE = &HF020&
public Const SC_MAXIMIZE = &HF030&




Put the following in the form load event:


Dim hMenu as Long, Success as Long

hMenu = GetSystemMenu(me.hwnd, 0)
Success = DeleteMenu(hMenu, SC_SIZE, MF_BYCOMMAND)
Success = DeleteMenu(hMenu, SC_MOVE, MF_BYCOMMAND)
Success = DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND)
Success = DeleteMenu(hMenu, SC_MINIMIZE, MF_BYCOMMAND)
Success = DeleteMenu(hMenu, SC_MAXIMIZE, MF_BYCOMMAND)
SendMessage me.hwnd, WM_NCACTIVATE, 0&, 0&
SendMessage me.hwnd, WM_NCACTIVATE, 1&, 0&




This will disable the menu's.