指定のメニュー項目にチェックを入れる          <TOP>


指定したメニュー項目にチェックを入れます。

GetMenu メニューハンドルを取得

GetSubMenu ポップアップメニューのハンドルを取得

CheckMenuRadioItem 指定範囲のメニュー項目をグループ化

 

例では、0〜1、3〜6をそれぞれグループ化しています。

 

'================================================================
'= 指定のメニュー項目にチェックを入れる
'=    (CheckMenuRadioItem.bas)
'================================================================
#include "Windows.bi"

' メニューのハンドルを取得
Declare Function Api_GetMenu& Lib "user32" Alias "GetMenu" (ByVal hWnd&)

' ポップアップメニューのハンドルを取得
Declare Function Api_GetSubMenu& Lib "user32" Alias "GetSubMenu" (ByVal hMenu&, ByVal nPos&)

' 指定の範囲のメニュー項目をグループ化
Declare Function Api_CheckMenuRadioItem& Lib "user32" Alias "CheckMenuRadioItem" (ByVal hMenu&, ByVal idFirst&, ByVal idLast&, ByVal idCheck&, ByVal uFlag&)

#define MF_APPEND &H100                 '
#define MF_BYCOMMAND &H0                'nPositionはメニュー項目のID
#define MF_BYPOSITION &H400             'nPositionはメニュー項目のインデックス
#define MF_CHECKED &H8                  'メニュー項目にチェックをつける
#define MF_DISABLED &H2                 'アイテムを選択不可にする
#define MF_GRAYED &H1                   'グレー表示されて選択できない
#define MF_HILITE &H80                  'メニューの項目を強調表示
#define MF_MOVE &H1000                  '
#define MF_SEPARATOR &H800              'メニュー項目はセパレータ
#define MF_STRING &H0                   '文字列
#define MF_UNHILITE &H0                 'メニューの項目を強調表示しない

Var Shared SubMenu As Long

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Var Menu As Long
    Var hWnd
    Var Ret As Long

    hWnd = GethWnd

    Menu = Api_GetMenu(hWnd)

    SubMenu = Api_GetSubMenu(Menu, 0)
End Sub

'================================================================
'=
'================================================================
Declare Sub mnuItem1_on edecl ()
Sub mnuItem1_on()
    Var Ret As Long

    Ret = Api_CheckMenuRadioItem(SubMenu, 0, 1, 0, MF_BYPOSITION)
End Sub

'================================================================
'=
'================================================================
Declare Sub mnuItem2_on edecl ()
Sub mnuItem2_on()
    Var Ret As Long

    Ret = Api_CheckMenuRadioItem(SubMenu, 0, 1, 1, MF_BYPOSITION)
End Sub

'================================================================
'=
'================================================================
Declare Sub mnuItem3_on edecl ()
Sub mnuItem3_on()
    Var Ret As Long

    Ret = Api_CheckMenuRadioItem(SubMenu, 3, 6, 3, MF_BYPOSITION)
End Sub

'================================================================
'=
'================================================================
Declare Sub mnuItem4_on edecl ()
Sub mnuItem4_on()
    Var Ret As Long

    Ret = Api_CheckMenuRadioItem(SubMenu, 3, 6, 4, MF_BYPOSITION)
End Sub

'================================================================
'=
'================================================================
Declare Sub mnuItem5_on edecl ()
Sub mnuItem5_on()
    Var Ret As Long

    Ret = Api_CheckMenuRadioItem(SubMenu, 3, 6, 5, MF_BYPOSITION)
End Sub

'================================================================
'=
'================================================================
Declare Sub mnuItem6_on edecl ()
Sub mnuItem6_on()
    Var Ret As Long

    Ret = Api_CheckMenuRadioItem(SubMenu, 3, 6, 6, MF_BYPOSITION)
End Sub

'================================================================
'=
'================================================================
Declare Sub mnuExit_on edecl ()
Sub mnuExit_on()
    End
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End