ホーム > カテゴリ > Visual Basic >

メニューのチェックマークを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」で確認しております。環境が異なる場合は正常に動作しない場合もございますのでご了承下さい。





関連記事



公開日:2015年03月04日
記事NO:00360


この記事を書いた人

💻 ITスキル・経験
サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。

画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ
プチモンテ代表、アーティスト名:プチモンテ
🎵 音楽制作
BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は叙情詩、叙情的な楽曲が多い。楽曲制作は2023年12月中旬 ~

オリジナル曲を始めました✨

YouTubeで各楽曲を公開しています🌈
https://www.youtube.com/@petitmonte

【男性ボーカル】DA・KA・RA | 新たな明日が風と共に訪れる

【男性、女性ボーカル】時空を超越する先に | 時空と風の交響曲

【女性、男性ボーカル】絆 | 穏やかな心に奏でる旋律