Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / WinAPI

Выпуск № 130
от 23.09.2005, 04:22

Администратор:Калашников О.А.
В рассылке:Подписчиков: 263, Экспертов: 28
В номере:Вопросов: 1, Ответов: 3


Вопрос № 26517: Добрый день! родительское окно должно отлавливать нажатие Enter в Edit control. (winapi) У меня не получается это сделать. я искал в Microsoft® Win32® Programmer's Reference 1992 - 1996. Не нашёл. Вроде бы должно что-то присылаться родительск...

Вопрос № 26.517
Добрый день!
родительское окно должно отлавливать нажатие Enter в Edit control. (winapi) У меня не получается это сделать.
я искал в Microsoft® Win32® Programmer's Reference 1992 - 1996. Не нашёл. Вроде бы должно что-то присылаться родительскому окну в сообщении WM_COMMAND, но я искал в win32sdk И не нашёл.

сообщение WM_NOTIFY вообще не причём, т.к. его моему родительскому окну не присылают.

edit обыкновенный, класс "EDIT", однострочный.

Я смотрел в spy++, едит получает сообщение о нажатии ввода, обрабатывает его и ничего не говорит про это родительскому окну.

Как же мне сделать так, чтобы при нажатии Enter фокус ввода клавиатуры переходил к родительскому окну? Подскажите пожалуйста в каком направлении копать? или посоветуйте пожалуйста мануал по этому делу (с указанием главы или страницы)

Отправлен: 18.09.2005, 04:20
Вопрос задал: Вiктор (статус: 5-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Raptor1
Здравствуйте, Вiктор!
Создай свой класс производный от CEdit и отсылай что тебе нужно родительскому окну
Ответ отправил: Raptor1 (статус: 7-ой класс)
Отправлен: 18.09.2005, 12:21
Оценка за ответ: 3
Комментарий оценки:
Я сначала прочитал и думал что вы говорите про какое-то создание производного класса MFC и по другому никак не выйдет (без классов), и решил что мне это не подходит (т.к. не использую в той программе классы). А потом уже понял что можно переопределить оконную процедуру ЕДИТ-а. Отослать что-нибудь из функции родительскому окну - это не проблема, просто я не знал что можно залезть в оконную процедуру ЕДИТ-а и оттуда послать. Спасибо за ответ.

Отвечает: Jadd
Здравствуйте, Вiктор!
Я не знаю в какой среде Вы работаете, поэтому буду говорить с позиции MSVC, т.к. принципы и в "чистом" WinAPI схожи, просто MFC берет на себя большую часть рутины. Итак. Однострочный эдит в mfc - CEdit. Этот класс производный от CWnd. Т.е. в "нормальной жизни" эдит такое же окно, как и "родитель". В связи с этим, что мешает при получении WM_CHAR тут же послать родителю сообщение WM_KEYDOWN, или тот же WM_CHAR, или какое-то свое сообщение? Т.е. получаем HWND родителя (в MFC это так: m_Edit.GetParent(), где m_Edit - CEdit) функцией GetParent(), в которую передаем как параметр HWND едита, а на выходе получим HWND родителя. И дальше выбираем способ отсылки сообщения: синхронный или асинхронный (SendMessage или PostMessage). И отсылаем родителю сообщение. А Родитель пусть его ловит. Вот так примерно. Если нужен будет пример или что-то не ясно - пиши.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Практикант)
Отправлен: 18.09.2005, 12:23
Оценка за ответ: 4
Комментарий оценки:
теперь когда я уже понял, то понятно и ваше объяснение. А сначала прочитал и совсем не понял. Дело в том что я до этого ни разу не слышал про сабклассинг. Вы объясняли подразумевая что я это знаю, а я не мог сказать что я не знаю что такое сабклассинг т.к. ещё не знал что я не знаю что это такое :-). Ну а теперь я уже разобрался, спасибо за ответ.

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Вiктор!

Я тоже присоединяюсь к мнению предыдущих экспертов: без сабклассинга не обойтись - стандартный Edit не посылает родителю нажатие клавиш...Даю пример в чистом API для контрола в диалоге.

Приложение:

---------
Удачи!

Ответ отправил: Лысков Игорь Витальевич (статус: 3-ий класс)
Отправлен: 19.09.2005, 10:37
Оценка за ответ: 5
Комментарий оценки:
спасибо за объяснение и пример, теперь разобрался, всё работает так как я хотел.
(дело в том, что я вообще первый раз слышу про сабклассинг, - не приходилось
ещё с этим иметь дело. Теперь буду знать)


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.winapifaq
Отписаться
Вспомнить пароль

В избранное