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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определить нажатия клавиши Enter 
:(
    Опции темы
Neitron
Дата 16.12.2005, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 3
Всего: 5



Когда фокус находится на Edit Control, как определить нажатие клавиши Enter, не переделывая ф-циию обработчик сообщений для этого самого Edit.


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
Romikgy
Дата 16.12.2005, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



Что-то типа onKeyPress присутствует?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Neitron
Дата 16.12.2005, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 3
Всего: 5



Это уже другое дело, мне просто нужно как-ниубдь поймать сообщение о нажатии клавиши Enter, а дальше дело техники...


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
JoyEx
Дата 16.12.2005, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дядя
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 21.6.2005
Где: Москва, РФ

Репутация: 4
Всего: 12



GetKeyState()


--------------------
Если ты уже никого не боишься, значит ты самый страшный 
PM IM ICQ AOL YIM MSN   Вверх
Neitron
Дата 16.12.2005, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 3
Всего: 5



JoyEx
Нет!.
Я не собираюсь каждую божую милисекунду, вызывать эту хрень.

Как в обработчике главного окна, словить нажатия клавиши Enter когда фокус находится на Edit Control?

Это сообщение отредактировал(а) Neitron - 16.12.2005, 16:31


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
_hunter
Дата 16.12.2005, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 13
Всего: 98



хук повесить. только зачем такие извращения?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Aleksandor
Дата 16.12.2005, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Практик
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 22.11.2005
Где: россия, зеленогра д

Репутация: 10
Всего: 12



Может попробовать RegisterHotKey с VK_ENTER
а GetFocus() поможет определить источник WM_HOTKEY ??


--------------------
Call out Gouranga be happy!!!
Gouranga Gouranga Gouranga ....
That which brings the highest happiness!!
PM MAIL   Вверх
Neitron
Дата 16.12.2005, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 3
Всего: 5



Можно без извращений. Я хочу понять сам принцип. Хук - это слишком сурово. Согласен.
Без извращений значит нужно переопределять ф-циию обработчик для Эдита?

Вопрос два, переключение по tab как сделать?


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
_hunter
Дата 16.12.2005, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 13
Всего: 98



1 -- да. все так делают. что тебе не нравится?
2 -- пошли диалогу WM_NEXTDLGCTL


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Neitron
Дата 16.12.2005, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 3
Всего: 5



Цитата(_hunter @ 16.12.2005, 16:55)
1 -- да. все так делают. что тебе не нравится?

Спасибо. Я просто не знал как все делают. Вот и спросил.
Цитата

2 -- пошли диалогу WM_NEXTDLGCTL

Ок.


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
JoyEx
Дата 16.12.2005, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дядя
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 21.6.2005
Где: Москва, РФ

Репутация: 4
Всего: 12



Цитата(Neitron @ 16.12.2005, 16:30)
Как в обработчике главного окна, словить нажатия клавиши Enter когда фокус находится на Edit Control?

Никак. Надо делать subклассинг EDITа



1) Замена оконной процедуры:
Код

if(wpOrigEditProc == NULL){

    HWND hWndEdit = GetDlgItem (IDC_EDIT1)->m_hWnd;
    wpOrigEditProc = (WNDPROC)GetWindowLong (hWndEdit, GWL_WNDPROC);

    if(wpOrigEditProc){
        SetWindowLong (hWndEdit, GWL_WNDPROC, (LONG)EditSubclassProc);
    }
}


2) Новая оконная процедура:
Код

WNDPROC wpOrigEditProc = NULL;

LRESULT CALLBACK EditSubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    if((WM_KEYUP == uMsg) && (wParam == VK_RETURN  )){
        ::MessageBox (0, "Ok!", "", MB_OK);
        return 0;
    }

    return CallWindowProc(wpOrigEditProc, hwnd, uMsg, wParam, lParam); 

}






--------------------
Если ты уже никого не боишься, значит ты самый страшный 
PM IM ICQ AOL YIM MSN   Вверх
Neitron
Дата 16.12.2005, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 3
Всего: 5



JoyEx
Я знаю как переопределять ф-ции, но все равно спасибо.

Это сообщение отредактировал(а) Neitron - 16.12.2005, 17:05


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
Fixin
Дата 16.12.2005, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


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

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



Цитата(Neitron @ 16.12.2005, 17:47)
Вопрос два, переключение по tab как сделать?
Обычно всем контроллам ставишь WS_TABSTOP (где надо) Или WS_GROUP а в цикле сообщений делаешь так:
Код
while (GetMessage(&Msg, NULL, 0, 0))
    {
        if (!IsDialogMessage(MainWindow, &Msg))
        {
            TranslateMessage(&Msg);
            DispatchMessage(&Msg);
        }
    }


PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0577 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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