![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
ChaserHA |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 15.11.2006 Репутация: нет Всего: 1 |
Всем привет.
Обрабатываю сообщение TWMNotify для ListView.
Проблема: если ListView находится на форме, то сообщение обрабатвается, ели ListView поместить к примеру на Panel, то TForm1.WMNotify не срабатывает. Вроде как в такой ситуации надо перекрыть WndProc, но у меня не выходит (( Пишу в FormCreate "Panel1.WindowProc:=WndProc;", затем обрабатываю,
но вылетает ошибка. Может это конечно полный бред, тогда подскажите как сделать правильно. |
||||
|
|||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
не, ну правильно)
присвоил только Msg, а в остальном мусор содержится. пиши Msg := TWMNotify( Message ); и вообще, более "звучные" названия давай переменным) а то Msg.Msg както неочень имхо смотрится) + хошь каверзный вопрос? как высоко летит? вектор движение и ускорение измерить не пробовали? а если серьезно - КАКАЯ ошибка? -------------------- There are always someone smarter than you... |
|||
|
||||
ChaserHA |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 15.11.2006 Репутация: нет Всего: 1 |
Благодарю за внимание, исправил, но теперь выдается ошибка "Stack overflow".
Это сообщение отредактировал(а) ChaserHA - 6.2.2007, 09:24 |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
а зачем ты WMNotify(Msg) делаешь?! или убери эту строчку, или убери message WM_NOTIFY;
Это сообщение отредактировал(а) MetalFan - 6.2.2007, 09:28 -------------------- There are always someone smarter than you... |
|||
|
||||
ChaserHA |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 15.11.2006 Репутация: нет Всего: 1 |
Если убрать эту строчку ничего не меняется, т.е. опять появляется "Stack overflow".
|
|||
|
||||
ChaserHA |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 15.11.2006 Репутация: нет Всего: 1 |
На всякий случай привожу полный код.
Если разкомментировать procedure WndProc и Panel1.WindowProc:=WndProc;, то "Stack overflow". Как сделать чтобы все это работало?
|
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
странно) хотя понятно. ошибка в глаза бросается. что у тебя полчуается.... - перекрыт метод WndProc у формы. - он же назначается как WindowProc Panelи. приходит сообщение форме, потом попадает в WindowProc панели, которым является WindowProc формы, который опять отдает сообщение WindowProc панели... вот вам и рекурсия и переполнение стека варианты решения: 1) *убери в FormCreate переназначение WindowProc панели * в "перекрытом" WndProc вызывать не inherited, а inherited WndProc(Message); 2) *убрать перекрывание WndProc. * назвать новый метод NewWndProc. * в OnCreate сохранить в поле класса FOldWndProc старый обработчик типа TWndMethod * в NewWndProc вызывать FOldWndProc Это сообщение отредактировал(а) MetalFan - 7.2.2007, 00:07 -------------------- There are always someone smarter than you... |
|||
|
||||
osvirt |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 31.1.2007 Репутация: нет Всего: нет |
День добрый. Похожая неразрешимая (мной
![]() простецкий код:
все работает пока не помещу на Panel (которая сама на панели лежит... не знаю: может там еще придется че-то дописывать из-за этого?) добавление этого:
не меняет ничего... подскажите нубу, как заставить календарь срабатывать на месте ![]() |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |