システムメニューを削除すると、メニューに対応する機能も制限され、実際に移動できなくなったりサイズ変更できなくなったりします。削除するにはDeleteMenu関数を使用し、第二引数には削除したい番号(n番目)を指定します。セパレータもメニューに含みますから全てのシステムメニューを削除するには7つ削除しないといけません。
下のサンプルでは全て(セパレータ含む)のシステムメニューを削除します。DeleteMenu関数の第二引数が0なのは0番目(一番上)を削除すると、次のメニューが繰り上がって0番目になるからです。
※「閉じる」を削除するとタイトルメニューの×ボタンまでグレー(Enabled=False)になりますが、最小化・最大化メニューを削除してもタイトルメニューのボタンは残ったままになります。最小化・最大化ボタンを消去したい場合は「フォーム・最小化最大化ボタンの消去(API)」を参照してください。
Private SubForm_Load()
DimiAs Integer
DimlretAs Long
Dim hMenu As Long
hMenu = GetSystemMenu(Me.hwnd, 0)
Fori = 0To6
CallDeleteMenu(hMenu, 0, MF_BYPOSITION)'システムメニューの上からn番目を削除
Next
End Sub
'-------------------------------------------------------
'
'-------------------------------------------------------
Public Declare FunctionGetSystemMenuLib"user32" (ByValhwndAs Long,ByValbRevertAs Long)As Long
Public Declare FunctionDeleteMenuLib"user32" (ByValhMenuAs Long,ByValnPositionAs Long,ByValwFlagsAs Long)As Long
Public ConstMF_BYPOSITION = &H400&
DownLoad vbtips083.lzh 2KB (VB6.0)