· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Картинка вдоль левой кромки меню

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Ноя 6, 2003 22:07:57 · Поправил: prog

Ктонибудь может подсказать как в меню, которое открывается по правой кнопке мыши в трее (popup), вдоль левой кромки вставить картинку, как в меню аськи?


Дата: Ноя 6, 2003 23:20:45

Исходников у меня сейчас нет, а подробно описывать - это слишком долго. Если в общих фразах, то так:
Меню должно быть OWNERDRAW, то есть прорисовку пунктов меню должна осуществлять не система, а твоя WndProc. Когда сделаешь это, то можно с меню делать что угодно, в том числе и сдвинуть пункты вправо, наложить битмап, сделать его полупрозрачным и т. д.
Но многие производители софта давно уже отказались от стандартного меню, а вместо этого используют "сахарозаменители" - систему окон, которая ведет себя как стандарное меню + имеет много дополнительных возможностей


Дата: Ноя 7, 2003 01:32:45

Можно SetMenuItemBitmap но это примерно где-то 14x14
ownerdraw лучше
ищи исходники JohnFound'a na board.win32asmcommunity.net


Дата: Ноя 7, 2003 05:06:26

comrade
Да нет, это совсем не то. Нужно в OWNERDRAW вывести вертикальную полоску на всю высоту окна (как в меню "Пуск"). Можно просто сдвинуть все пункты вправо, чтобы они не затирали полоску при выделении. А можно сделать отдельный задизабленный пункт, отделив его вертикальным разделителем, чтобы при проведении мышью над ним не выделялись другие пункты.


Дата: Ноя 7, 2003 05:24:18

prog
У меня есть ActiveX, который позволяет создавать меню(настоящие, а не эмуляцию!) круче, чем в Office XP. Например такое: полупрозрачность окна, градиентная заливка(до 255 переходов), картинка сбоку, картинка на фоне, выделение картинкой, полупрозрачное выделение, любой размер и тип шрифта, мягкая(плавная) тень.

Писал я его на VB6, так что для использования нужно, чтобы в системе был файл msvbvm60.dll
Если интересно, можешь посмотреть на [url=]http://www.vbrussian.com[/url]. Называется MenuX.


Дата: Ноя 7, 2003 11:29:57

У меня вопрос по меню. Я использую стиль OWNERDRAW, для itemov. Но я немогу сделать меню плоским.


Дата: Ноя 7, 2003 12:00:27 · Поправил: prog

Спасибо, Toxic, но с dll мне, к сожалению, не годится..
Буду пробовать..
Спасибо!


Дата: Ноя 7, 2003 12:58:01

Chib777
Правильно, не сделаешь. OWNERDRAW нужен для прорисовки элементов: система запрашивает у тебя размеры элементов, потом на основе этих данны создает окно, и при каждой прорисовке просит тебя нарисовать элемент самому. Но ведь это только элементы, а не само окно.
Можешь сделать перехват, когда создается окно и сабклассить его, используя свою оконную процедуру при событии WM_NCPAINT.


Дата: Ноя 7, 2003 14:40:02

Toxic
Кто нибудь знает у меню есть свой класс окна, я имею ввиду класс как - BUTTON.


Дата: Ноя 7, 2003 14:49:24

Есть - "#32768"


Дата: Ноя 7, 2003 14:53:34

Кто нибудь знает в MASM, можно подключать библиотеки классов на С++ (там компилятор изменил имена функций).


Дата: Ноя 7, 2003 18:20:25 · Поправил: prog

А может можно как-то задать у итема меню(не OWNERDRAW) свойства, чтобы при наведении мышки он не подсвечивался?
Т.е. MF_DISABLED делает что клик не срабатывает, но пункт все равно подсвечивается.
Как отключить подсветку??


Дата: Ноя 7, 2003 18:36:43

prog
Нет, это дефолтное поведение меню, все остальное - только ручками рисовать надо.


Дата: Ноя 7, 2003 18:56:28 · Поправил: prog

понятно..
а както ловить событие mouseover над этим пунктом меню и тутже ставить ему MF_UNHILITE ?
это извращение?


Дата: Ноя 7, 2003 19:02:54

это извращение?
Ну, можно поставить хук и ловить мышку, но зачем мазохизмом заниматься?

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.041