Выделение пункта меню средствами API

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Megas13
Новичок
Новичок
Аватара пользователя
 
Сообщения: 40
Зарегистрирован: 03.08.2006 (Чт) 9:46
Откуда: IL

Выделение пункта меню средствами API

Сообщение Megas13 » 14.12.2008 (Вс) 0:35

Есть меню созданое посредством API функций CreatePopupMenu, AppendMenu.
Задача заключается в том, чтобы при отоброжении меню функцией TrackPopupMenu выделить один из пунктов меню жирным, как это делает внутреняя функция VB - PopupMenu с установленым параметром DefaultMenu.

Облазил пол инета, но так и не смог найти решение. :(

Megas13
Новичок
Новичок
Аватара пользователя
 
Сообщения: 40
Зарегистрирован: 03.08.2006 (Чт) 9:46
Откуда: IL

Re: Выделение пункта меню средствами API

Сообщение Megas13 » 14.12.2008 (Вс) 1:06

Разобрался сам. Если кого интересует, то делается это так:

Код: Выделить всё
Public Type MENUITEMINFO
    cbSize As Long
    fMask As Long
    fType As Long
    fState As Long
    wID As Long
    hSubMenu As Long
    hbmpChecked As Long
    hbmpUnchecked As Long
    dwItemData As Long
    dwTypeData As String
    cch As Long
End Type

Public Const MFS_DEFAULT = &H1000
Public Const MIIM_STATE = &H1
Public Const API_TRUE = 1

Declare Function SetMenuItemInfo Lib "user32" Alias "SetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal bool As Boolean, lpcMenuItemInfo As MENUITEMINFO) As Long

'Код в функции
Dim mii As MENUITEMINFO

hPopMenu = CreatePopupMenu()
AppendMenu hPopMenu, 0&, 1100, "Test"

mii.cbSize = Len(mii)
mii.fMask = MIIM_STATE
mii.fState = MFS_DEFAULT
SetMenuItemInfo hPopMenu, 0, API_TRUE, mii
Компьютер не подчиняется законам физики.Только в нем глюки возникают из ничего, файлы исчезают в никуда, а объем измеряется в метрах и называется весом.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 64

    TopList  
cron