![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 12.04.2011
Сообщений: 7
|
![]()
Всем доброе время суток.
Помогите,пожалуйста! Столкнулась с такой проблемой: У меня есть диалоговое окно, в нем Edit мне нужно отловить сообщение WM_KEYDOWN (нажатие клавиши). Как это можно делать? Вычитала на другом форуме что " класс стандартного Edit регистрирует система. Соответственно, когда вы создаете окно с классом "Edit" ( CreateWindow ) будет использован системный класс и оконная процедура ( системная ) прописанная в этом классе. Она и реализует стандартные действия контрола, т.е. ввод с клавиатуры, отображение символов и т.д. Если Вам надо поменять стандартное поведение контрола вы можете подменить оконную функцию, реализовать в подмененой нужные Вам моменты, и вызвать системную оконную процедуру, чтобы не реализовывать ввод с клавиатуры, отображение символов и т.д." но не могу понять как это "подменить"! да, и может есть другой какой-то способ? ![]() |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 18.10.2008
Сообщений: 1,409
|
![]()
используйте GetWindowLong/SetWindowLong
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 12.04.2011
Сообщений: 7
|
![]()
Что-то не пойму как, с помощью GetWindowLong или SetWindowLong, можно словить сообщение WM_KEYDOWN на едите. Можно,пожалуйста, поподробней.
|
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 18.10.2008
Сообщений: 1,409
|
![]()
Вы что нибудь читали про эти функции? Наверное нет... С помощью SetWindowLong с флагом GWL_WNDPROC для окна можно переназначить оконную функцию и в ней уже творить все, что вам надо.
http://msdn.microsoft.com/en-us/libr...91(VS.85).aspx http://vsokovikov.narod.ru/New_MSDN_...windowlong.htm |
![]() |
![]() |
![]() |
#5 |
Регистрация: 12.04.2011
Сообщений: 7
|
![]()
counter, да читала, только ниче не поняла, теперь что-то дошло, спасибо будем думать дальше
![]() |
![]() |
![]() |
![]() |
#6 |
Новичок
Джуниор
Регистрация: 19.04.2011
Сообщений: 1
|
![]()
Вот такая проблема: пытаюсь вынести создание контролов в отдельный класс
все получилось, но обработчик сообщений остается все равно в основном файле. то есть перенаправляю обратно в метод класса, но как видите Это не есть правильный путь Код:
Последний раз редактировалось alexsin; 19.04.2011 в 21:07. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Отловить движение курсора, диалоговые сообщения. | Deight | Общие вопросы Delphi | 15 | 17.11.2008 11:28 |
Рисунок на диалоговом окне!! | HunterMan | Win Api | 4 | 10.06.2008 12:25 |
Рисование в диалоговом окне (Си++) | molo4nik | Помощь студентам | 1 | 06.05.2008 18:27 |
изменить цвет в диалоговом окне MessageDlg | Михаил Юрьевич | Общие вопросы Delphi | 8 | 27.04.2008 18:20 |
Как при скрытом чужом окне сделать его дочерние окна(сообщения) видимыми ? | Starwarrior | Win Api | 1 | 20.03.2007 09:51 |