Anasayfa > Kodlar > VB6’da Api ile resimli menu yaratmak

VB6’da Api ile resimli menu yaratmak

Bu  kod ile Visual Basic editorunde yapılan bir menunun item'na resim ekliyoruz. Bunun icin ilk olaran forma bir imagelist control eklenmelidir. daha sonra AddBitmapToMenu
fonksyonu cagrılacaktır. Bu fonksiyonun parametreleri sirasıyla su anlama gelmektedir.

 

lnghWnd As Long  : formhandle
lngBitmapUnchecked As Long : menuitem'in uncheck bitmap
lngBitmapChecked As Long : menuitem'in check bitmap
lngMainMenuItem As Long : menu item index(0 tabanlı)
lngMenuItem As Long : sub menu item index(0 tabanlı)

Ve tabiki en az bir sub itemi olan bir menu eklenmesi gerekiyor.


Option Explicit

Private Declare Function GetMenu _
Lib "user32" _
(ByVal hwnd As Long) _
As Long

Private Declare Function GetMenuItemID _
Lib "user32" _
(ByVal hMenu As Long, _
ByVal nPos As Long) _
As Long

Private Declare Function GetSubMenu _
Lib "user32" _
(ByVal hMenu As Long, _
ByVal nPos As Long) _
As Long

Private 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

Private Declare Function SendMessage _
Lib "user32" _
Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) _
As Long

Private Const MF_BYCOMMAND = &H0&
Private Const EM_CANUNDO = &HC6

Public Sub AddBitmapToMenu( _
lnghWnd As Long, _
lngBitmapUnchecked As Long, _
lngBitmapChecked As Long, _
lngMainMenuItem As Long, _
lngMenuItem As Long)
'
Dim lnghMenu As Long
Dim lnghSubMenu As Long
Dim lngMenuID As Long
Dim lngResult As Long

On Error GoTo PROC_ERR

' formdaki menuyu handle et.
lnghMenu = GetMenu(lnghWnd)

' formdaki submenuyu handle et
lnghSubMenu = GetSubMenu(lnghMenu, lngMainMenuItem)

' formdaki subitemi handle et
lngMenuID = GetMenuItemID(lnghSubMenu, lngMenuItem)

'resimleri set'le
lngResult = SetMenuItemBitmaps( _
lnghMenu, _
lngMenuID, _
MF_BYCOMMAND, _
lngBitmapUnchecked, _
lngBitmapChecked)

PROC_EXIT:
Exit Sub

PROC_ERR:
MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
"AddBitmapToMenu"
Resume PROC_EXIT

End Sub

Private Sub Form_Load()
Call AddBitmapToMenu(Me.hwnd, ImageList1.ListImages(1).Picture, ImageList1.ListImages(1).Picture, 0, 0)
End Sub

Private Sub mnusave_Click()
mnusave.Checked = Not mnusave.Checked
End Sub


Birkan SARIFAKIOGLU

  1. Henüz yorum yapılmamış.
  1. No trackbacks yet.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: