Изменить шрифт в в собственном меню (API)

Программирование на Visual Basic for Applications
Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Изменить шрифт в в собственном меню (API)

Сообщение Avtopic » 15.10.2006 (Вс) 19:01

Добрые люди!
Вы не представляете как мне это нужно, если кто может, дайте направление.

Как изменить шрифт в в собственном меню, созданном с помощью CreatePopupMenu, AppendMenu и т.д.
(изменить шрифт на шрифт, который уже инсталлирован).
Долгое время бьюсь над этим. Кое что удалось кое что нет.
Куда копать в двух словах.
Например, для формы в Vb изменить шрифт удается сделать. Дальше не смог продвинутся

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 15.10.2006 (Вс) 19:51

В двух словах: PopupMenu2
(а поиск, тот сверху и красный)
Изображение

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 15.10.2006 (Вс) 19:51

по моим знаниям, проблема уперлась в нахождении hdc меню для
SelectObject(??,hdc, rFont)

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 15.10.2006 (Вс) 19:53

Ой, пока писал, появился ваш ответ. Пока я роюсь в поисках, что мои второй, игнорировать!

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 15.10.2006 (Вс) 20:03

Самое ценное до чего пока что докопался, это понял, как сформировать .lfFaceName.
Вообще, если вы мне покажете, где написано про этот массив на вразумительном языке, я скажу что не искал. Вообще случайно докопался до того, что это из себя представляет, и то не совсем понял.
К стати, поиск знаю, где находится, плюс” PopupMenu2” в поиске по форуму, выводит толко этот топик, плюс я искал не только по форуму но и, по моему везде.
Но постараюсь еще поискать.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 15.10.2006 (Вс) 20:09

Изображение

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 15.10.2006 (Вс) 21:07

Avtopic писал(а):Вообще, если вы мне покажете, где написано про это... я скажу что не искал.

tyomitch писал(а): Да? http://bbs.vbstreets.ru/viewtopic.php?t=6807

Я не искал!:)

А если серьезно, информация по API в инете представлена, хуже не бывает.
По моим догадкам это (API), легче любого языка программирования, но как это предлагают, это ужас.
Про функции все пишут, про структуры информации ноль. Да, и про функции написано так, чтобы никто не догадался.
Вот и приходится коприпастить, как любит выражаться GSerg.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 16.10.2006 (Пн) 6:58

Avtopic писал(а):А если серьезно, информация по API в инете представлена, хуже не бывает.
По моим догадкам это (API), легче любого языка программирования, но как это предлагают, это ужас.
Про функции все пишут, про структуры информации ноль. Да, и про функции написано так, чтобы никто не догадался.
Вот и приходится коприпастить, как любит выражаться GSerg.


В корне не согласен! Все что надо знать про API в инете есть. И изложено это простым понятным и доступным языком, и про функции и про структуры... Ищи книги Эппельмана, Брюса МакКини и Джефри Рихтера
Весь мир матрица, а мы в нем потоки байтов!

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 20.10.2006 (Пт) 18:09

В основном разобрался, и научился перерисовывать меню.
Но никак не смог пройти одну точку:

В принципе для того, кто может ответить на проблему, особо объяснять нечего, и по коду поймет:

Код: Выделить всё
' модифик. элем. меню в MF_OWNERDRAW
Public Sub CreateOwnerDrawMenu(ByVal hMenu As Long, ByVal MenuID As Long, ByVal ItemData As Long)
Dim dwordFlag As Long
Dim mii As MENUITEMINFO
mii.cbSize = Len(mii)
mii.fMask = MIIM_TYPE
GetMenuItemInfo hMenu, MenuID, False, mii
dwordFlag = MF_BYCOMMAND Or MF_OWNERDRAW
    If ((mii.fType And MF_SEPARATOR) = MF_SEPARATOR) Then dwordFlag = dwordFlag Or MF_SEPARATOR
    If ((GetMenuState(hMenu, MenuID, MF_BYCOMMAND) And MF_CHECKED) = MF_CHECKED) Then dwordFlag = dwordFlag Or MF_CHECKED
    If ((GetMenuState(hMenu, MenuID, MF_BYCOMMAND) And MF_DISABLED) = MF_DISABLED) Then dwordFlag = dwordFlag Or MF_GRAYED
Call ModifyMenu(hMenu, MenuID, dwordFlag, MenuID, ItemData)
End Sub

после чего в функции WondowProc происходит перерисовка соответствующих элементов меню. Все работает нормально. Но споткнулся на подменю. Никак не смог заставить перерисовать пункт подменю, сами элементы подменю перерисовывются, но что задать в вышеуказанной процедуре для dwordFlag когда элемент меню MF_POPUP, чтобы перерисовка происходила как элемента меню MF_BYCOMMAND. пробовал оставить для заголовка подменю dwordFlag = MF_BYCOMMAND Or MF_OWNERDRAW, но перерисовку не делает.


Вернуться в VBA

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

Сейчас этот форум просматривают: Google-бот и гости: 78

    TopList