メニューのチェックマークをBMPに変更する
メニューのチェックマークをBMPに変更するサンプルです。
サンプルの実行画面

APIの宣言
[CheckBMP.bas]
'---------------------------------- 'メニューのハンドルを取得するAPI関数 '--------------------------------- 'hWnd:ウインドウのハンドル '戻り値:メニューのハンドル Public Declare Function GetMenu Lib "USER32" (ByVal hWnd As Long) As Long '---------------------------------------------------- 'トップレベル(サブ)メニューのハンドルを取得するAPI関数 '---------------------------------------------------- 'hMenu:メニューのハンドル 'nPos:メニュー項目の位置 '戻り値:トップレベルメニューのハンドル Public Declare Function GetSubMenu Lib "USER32" (ByVal hMenu As Long, ByVal nPos As Long) As Long '---------------------------------------------------- 'メニューのチェックマークをビットマップに変更するAPI関数 '---------------------------------------------------- 'hMenu:メニューのハンドル 'nPosition:wFlagsで指定した値 'wFlags:定数(MF_××参照) 'hBitmapUnchecked:チェックしていない時のBMPのハンドル(0にすれば何も表示されない) 'hBitmapCheckeチェックしている時のBMPのハンドル '戻り値:正常終了0以外 Public Declare Function SetMenuItemBitmaps Lib "USER32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal hBitmapUnchecked As Long, ByVal hBitmapChecked As Long) As Long Public Const MF_BYPOSITION = &H400 'メニューの項目番号(0~) Public Const MF_BYCOMMAND = &H0 'メニューのID '------------------------------------------------ '■関数名 CheckBMP '■用途 メニューのチェックマークをBMPに変更する '■引数 ' nhWmd 親ウインドウのハンドル ' Position メニューの項目番号(0~) ' UnCheck チェックしていない時のBMPのハンドル ' Check チェックしている時のBMPのハンドル '------------------------------------------------ Public Sub CheckBMP(nhWmd As Long, Position As Long, UnCheck As Long, Check As Long) Dim hMen As Long 'メニューのハンドル Dim SubMen As Long 'サブメニューのハンドル Dim Ret As Long '戻り値 'メニューのハンドルを取得 hMen = GetMenu(nhWmd) 'サブメニューのハンドルを取得 SubMen = GetSubMenu(hMen, 0) 'メニューのチェックマークをビットマップに変更する。 Ret = SetMenuItemBitmaps(SubMen, Position, MF_BYPOSITION, UnCheck, Check) End Sub
APIの呼び出し
[CheckBMP.frm]
'メニューの「コピー」の処理 Private Sub Copy_Click() If Copy.Checked = True Then Copy.Checked = False Else Copy.Checked = True Call CheckBMP(Form1.hWnd, 1, 0, Picture2.Picture) End If End Sub 'メニューの「切り取り」の処理 Private Sub Cut_Click() If Cut.Checked = True Then Cut.Checked = False Else Cut.Checked = True Call CheckBMP(Form1.hWnd, 0, 0, Picture1.Picture) End If End Sub 'メニューの「削除」の処理 Private Sub Delete_Click() If Delete.Checked = True Then Delete.Checked = False Else Delete.Checked = True Call CheckBMP(Form1.hWnd, 3, 0, Picture4.Picture) End If End Sub 'メニューの「貼り付け」の処理 Private Sub Draw_Click() If Draw.Checked = True Then Draw.Checked = False Else Draw.Checked = True Call CheckBMP(Form1.hWnd, 2, 0, Picture3.Picture) End If End Sub Private Sub Form_Load() Picture1.Picture = LoadPicture(App.Path & "\Cut.bmp") Picture2.Picture = LoadPicture(App.Path & "\Copy.bmp") Picture3.Picture = LoadPicture(App.Path & "\Paste.bmp") Picture4.Picture = LoadPicture(App.Path & "\Spelling.bmp") End Sub
ソースコード一式のダウンロード
vbapi_checkbmp.zip 3.28 KB (3,366 バイト)
このサンプルの動作環境について
このサンプルは 「Windows98」及び「Microsoft Visual Basic 5.0 Professional Edition」で確認しております。環境が異なる場合は正常に動作しない場合もございますのでご了承下さい。
スポンサーリンク
関連記事
前の記事: | INIファイルに文字列を書きこむ |
次の記事: | ポップアップメニューを指定の位置に表示する |
公開日:2015年03月04日
記事NO:00360