Поиск:

Ответ в темуСоздание новой темы Создание опроса
> добавление в дерево, звуи при нажатии клавиш 
V
    Опции темы
Rickert
Дата 1.10.2008, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


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

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



Есть диалог. По действию из меню заполняет CTreeCtrl неопред. кол-во элементов.
В этом же диалоге есть ещё одно дерево и стоит обработка PreTranslateMessage, в которой отлавливается нажатие клавишь.
До заполнения первого дерева, при нажатии клавишь, всё нормально, но после заполнения появляются звуки как будто где-то предупреждение вываливается. При этом, если я меняю фокус первого дерева на второе (которое пустое) - просто тыкаю мышкой в него: звуки исчезают. Перехожу фокусом обратно на первое - опять появляются. Есть два вопроса:
0) Почему вдруг музыкальное сопровождение?
1) Как убрать фокус програмно?


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Earnest
Дата 1.10.2008, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



1) Виндоус пищит, если клавиатурный или мышиный ввод приходит в окно, которое его не принимает
2) Фокус можно не убрать, а переставить (где-то он должен быть) - SetFocus


--------------------
...
PM   Вверх
Rickert
Дата 1.10.2008, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


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

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



Цитата(Earnest @  1.10.2008,  12:13 Найти цитируемый пост)
1) Виндоус пищит, если клавиатурный или мышиный ввод приходит в окно, которое его не принимает

Видимо я что-то не так думаю?
Код
BOOL aDialogTcejbo::PreTranslateMessage(MSG* msg)
{
  if (msg->message == WM_KEYDOWN)
  {
    if (msg->wParam == VK_RETURN)
      return 0;

    if (msg->wParam == VK_ESCAPE)
      return 0;

    if (msg->wParam == 'W')
      rendering.camera.acMoveCamera(rendering.asGetCameraSpeed());
    if (msg->wParam == 'S')
      rendering.camera.acMoveCamera((-rendering.asGetCameraSpeed()));
    if (msg->wParam == 'A')
      rendering.camera.acStrafeCamera((-rendering.asGetCameraSpeed()));
    if (msg->wParam == 'D')
      rendering.camera.acStrafeCamera(rendering.asGetCameraSpeed());
    if (msg->wParam == 'Q')
      rendering.camera.acMoveCameraUp((-rendering.asGetCameraSpeed()));
    if (msg->wParam == 'E')
      rendering.camera.acMoveCameraUp(rendering.asGetCameraSpeed());
  }

  return CDialog::PreTranslateMessage(msg);
}

Давлю, в частности: Q и E


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Earnest
Дата 1.10.2008, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Не поняла, в чем вопрос? Символы-то все равно попадают в текущее окно ввода, несмотря на все твои ifы...


--------------------
...
PM   Вверх
Rickert
Дата 2.10.2008, 05:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


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

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



Earnest, хорошо, тогда так: как принимать этот ввод, избавиться от писка?

Это сообщение отредактировал(а) Rickert - 3.10.2008, 04:01


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Earnest
Дата 2.10.2008, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(Rickert @  1.10.2008,  09:32 Найти цитируемый пост)
При этом, если я меняю фокус первого дерева на второе (которое пустое) - просто тыкаю мышкой в него: звуки исчезают

Сам ведь ответил...
Можно еще в PreTranslate, если фокус в пищищем дереве, не отдавать сообщения базовому обработчику, а возвращать TRUE (чтобы сообщение больше не обрабатывалось).



--------------------
...
PM   Вверх
Rickert
Дата 3.10.2008, 04:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


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

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



Цитата(Earnest @  2.10.2008,  08:27 Найти цитируемый пост)
Можно еще в PreTranslate, если фокус в пищищем дереве, не отдавать сообщения базовому обработчику, а возвращать TRUE (чтобы сообщение больше не обрабатывалось)

Вот что значит: "Учить мат. часть сынок!". Спасибо, как всегда выручаешь советом smile 


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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