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

 WASM Phorum —› WASM.WIN32 —› Popupmenu + edit

. 1 . 2 . 3 . >>

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


Дата: Дек 8, 2003 11:07:28

Всем привет!

Понадобилось мне сделать попап с эдитом. Я правильно понимаю что это только через ownerdraw?


Дата: Дек 8, 2003 11:23:42

Valery
А как именно должно работать. Если ты имеешь ввиду когда,
вводишь определённую комбинацию символов, появляеться всплывающее меню, и там выбераешь пункт меню. То тут вроде ownerdraw не нужен.


Дата: Дек 8, 2003 11:29:18

Нет, эдит должен быть в меню


Дата: Дек 8, 2003 12:58:15

Valery
Насколько я знаю, тут ownerdraw, не поможет. С помощью ownerdraw ты можешь лишь изменить прорисовку меню, и то не полностью. Вроде тут единственный выход создавать своё меню, т.е. как в примере xpmenu, с "иностранного сайта" по ассемблеру, ссылку не помню, но она где то есть в форуме. Там меню создаёться полностью, с нюля, т.е. оно не имеет ничего общего с обычным меню. Задача это очень непростая.
А если можно с обычным меню такое сделать, то мне тоже интерсно как это сделать.


Дата: Дек 8, 2003 13:14:33

Насколько я знаю, тут ownerdraw, не поможет
можно попробовать вставить edit control, hwnd меню получить можно, а с окном можно что угодно уже делать, ес-но обрабатывать все сообщения и возиться с хуками тебе самому придется. Можно и самому все меню рисовать - это уже точно как в XP будет :)
Другой вопрос - нужно ли это (и стоит ли таких затрат). Я такое только в MS Access видел, но нужно оно так или нет - вопрос спорный


Дата: Дек 8, 2003 13:38:23

Спасибо. Мне предложили недавно сляпать "как в аксес". Натравил spyx - признаков ownerdraw не нашел. Повешу хуки, боюсь только все равно естественно выглядеть не будет.


Дата: Дек 8, 2003 17:49:38

После экспериментов с ownerdraw систему так переглючило что и не до окошечек уже:)


Дата: Дек 9, 2003 20:26:10

Valery
Понадобилось мне сделать попап с эдитом
Я когда-то хотел такое сделать, но опыта было маловато. Потом просто забыл.
Тебе надо определить HWND окна меню, после того, как оно создастся, и поставить на него хук. После этого с помощью сабклассинга уже можно делать, что хочешь. А использовать или не использовать OWNERDRAW - тебе решать (если нужны нестандартные пункты, то ответ - да).


Дата: Дек 9, 2003 21:26:37 · Поправил: Valery

Toxic



Я с gdi-ями никогда по серьезному не работал. Ownerdraw item'ы я отрисовывал уже когда-то, но хрен что это мне дало. Совсем не въеду как правильно вляпать edit на меню. Пробовал MoveWindow получив рект из DRAWITEMSTRUCT.rcItem при обработке или через GetMenuItemRect - все какая то фигня выходит. Каким бы ни был эдит дочерним или сам по себе не слушается ни в какую. Тут доперло до меня что без сабклассинга не обойтись но никакой инфы найти про МЕНЮ как КЛАСС. Как можно ставить хуки не зная что с сообщениями делать? Если кто может ссылочку дать буду очень признателен.


Дата: Дек 9, 2003 21:45:16

Valery
Класс менюшных окон называется "#32768". Отловить окно можно, например, при первой прорисовке элементов (если стоит OWNERDRAW), а потом сабклассить.


Дата: Дек 9, 2003 22:38:57

Toxic

Спасибо!


Дата: Дек 11, 2003 01:21:04

Toxic
Класс менюшных окон называется "#32768". Отловить окно можно, например, при первой прорисовке элементов (если стоит OWNERDRAW), а потом сабклассить

Не все так просто. Читаем описание поля hwndItem из DRAWITEMSTRUCT:
Handle to the control for combo boxes, list boxes, buttons, and static controls. For menus, this member is a handle to the menu containing the item.

Перерыв MSDN я так и не нашел способа превратить HMENU в HWND 8(


Дата: Дек 11, 2003 10:42:45

Black_mirror
hwnd меню ловится элементарно CBT хуком (так более правильно), и зачем тебе нужно превращать hmenu в hwnd?


Дата: Дек 11, 2003 12:21:16

masquer

А можно сабклассить по хэндлу меню?


Дата: Дек 11, 2003 12:34:09

Самого меню, или его окна? :) Это ж две большие разницы :) Имеешь хендл окна - делаешь с ним все что хочешь.

. 1 . 2 . 3 . >>