Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как поймать нажатие клавиши в Edit? если WM_CHAR не ловится 
V
    Опции темы
Тутанхамец
Дата 23.1.2006, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: нет
Всего: 6



У меня есть диалоговое окно. Там есть созданное через CreateWindow текстовое поле. Надо бы, чтоб когда я нажимаю "стрелку вправо" фокус переходил на другое текстовое поле. Про TAB_STOP знаю. Вопрос, как поймать нажатие клавиши для Edit?

case WM_CHAR в процедуре диалогового окна не работает.

Есть что-нибудь проще, чем задание процедуры окна с помощью SetWindowLong?
PM MAIL   Вверх
Fixin
Дата 23.1.2006, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Проще - не знаю, но ты не то сообщение ловил. Надо WM_KEYDOWN или WM_KEYUP.

ЗЫ: НЕхорошо так делать (елси в едите вводится не один символ) надо же редактировать введенное, а мышкой не всегда удобно.
PM MAIL ICQ   Вверх
Fixin
Дата 23.1.2006, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Ну и примерчик, как полагается с отсутствием буквы "а" в расширении smile

Присоединённый файл ( Кол-во скачиваний: 16 )
Присоединённый файл  Examp.rr 1,64 Kb
PM MAIL ICQ   Вверх
Тутанхамец
Дата 23.1.2006, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: нет
Всего: 6



Опять спасибо smile

Там вводится как раз один символ - либо 1, либо 0. У меня массив из 32-ъ эдитов, которые изображают разрядную сетку для числа float. smile
PM MAIL   Вверх
Fixin
Дата 23.1.2006, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



тогда лучше сделать переход сразу после введения символа
PM MAIL ICQ   Вверх
Тутанхамец
Дата 24.1.2006, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: нет
Всего: 6



Слушай, вот ты в примере делаешь такую штуку:


Код

void TP_OnDestroy(HWND hwnd)
{
    SubclassWindow(GetDlgItem(hwnd, ID_EDIT1), OldEditProc);
    SubclassWindow(GetDlgItem(hwnd, ID_EDIT2), OldEditProc);
    PostQuitMessage(0);
}


А что будет, если не вернуть в класс старую процедуру?
PM MAIL   Вверх
Fixin
Дата 24.1.2006, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Да ничего. В принципе, это пережиток вин16, где все было общее (полный социализьм), вот там могли быть глюки, что ты закрыл свою прожку, а поведение субласенного контрола появилось в другом приложении. (правда я сам такого не видел). А теперь, этим делом может заняться система (виндовса).

Еще есть вариант, что в твоем приложении несколько ОКОН (а не диалогов), и в них ты субкласишь элементы управления, при закрытии одного окна, процесс продолжает существовать, и может оказаться что осталась и выделенная память под ту процедуру, на которую ты заменял стандартную, и при жестких требованиях к экономии памяти это может вызвть недовольство. (Пару раз окошко открыл - закрыл, а памяти - тю-тю)
PM MAIL ICQ   Вверх
Тутанхамец
Дата 25.1.2006, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: нет
Всего: 6



Ясно. На всякий случай буду возвращать процедуру на место.)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0450 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.