メニューの【閉じる】を無効化にするには[XP]?


こうじ  2002-04-10 05:11:26  No: 75484  IP: [192.*.*.*]

メニューの【閉じる】を無効化にするサンプルを見させていただいたのですが、
XP&VB6の環境で無効化ができません。
多分、「メニューのラベルを取得」が正常に動作してないのですが、
どのようにすればよいのでしょうか?

編集    削除
こうじ  2002-04-10 22:34:12  No: 75485  IP: [192.*.*.*]

RemoveMenuを使用することによって無効化が可能になりました。

−−−  使用例  −−−
'システムメニューのウインドウハンドルを取得する
Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long,ByVal bRevert As Long) As Long
'メニュー項目を削除する
Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long,ByVal nPosition As Long, ByVal wFlags As Long) As Long
Public Const MF_BYCOMMAND = &H0&    'nPositionはメニュー項目のID値
Public Const SC_CLOSE = &HF060      '閉じる(C)

'************************************************************
'* 機能 : メニュー項目の閉じる[×]ボタンを無効化に設定
'* 引数 : objForm=無効化したいフォームオブジェクト
'************************************************************
Public Sub RemoveSysMenu(ByVal objForm As Object)

dim lnghwnd As Long

    'システムメニューのウインドウハンドルを取得する
    lnghwnd = GetSystemMenu(objForm.hwnd, 0)
    'システムメニューの項目を削除する
    RemoveSysMenu = RemoveMenu(lnghwnd, SC_CLOSE, MF_BYCOMMAND)

End Function
−−−  ここまで  −−−

編集    削除