информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаПортрет посетителяАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / beginners
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
[MFC] Не понимаю как идут мессаджи в диалогах 29.12.08 11:30  
Автор: Heller <Heller> Статус: Elderman
Отредактировано 29.12.08 11:31  Количество правок: 1
<"чистая" ссылка>
Инвентарь: MS VC++ 2005

Делаю приложение на базе диалогового окна. В диалоге хочу сделать свой контрол следующим образом: наследую свой класс от CWnd (пускай это будет CMyControlClass), кладу указатель CMyControlClass в класс диалога. В OnInitDialog зову Create для CMyControlClass, парентом указываю this диалога, в стилях окна - WS_CHILD.

Далее хочу ловить в моем CMyControlClass нажатия кнопок. Тут начинается непонятное: из всех WM_KEYDOWN, WM_CHAR и WM_KEYUP в мой контрол приходит только WM_KEYDOWN. Остальные где-то теряются. Исключение - табуляция, для которой приходит только WM_KEYUP, и клавиша "Enter", с которой все понятно - у нее свои законы поведения в диалоге.

Вопрос - куда деваются WM_CHAR и WM_KEYUP? Я пытался выяснить этот вопрос, переопределив PreTranslateMessage - в него приходят все три месседжа. Пытался шагать внутрь CWnd::PreTranslateMessage - ничего подозрительного не обнаружил, он всегда возвращает FALSE. В общем, имееся у меня некоторое непонимание. Инфорамации в Гугле не нашел. Буду благодарен за объяснения.
Указатель? Зачем указатель? Хотя в целом неважно. 29.12.08 21:50  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Инвентарь: MS VC++ 2005
>
> Делаю приложение на базе диалогового окна. В диалоге хочу
> сделать свой контрол следующим образом: наследую свой класс
> от CWnd (пускай это будет CMyControlClass), кладу указатель
Указатель? Зачем указатель? Хотя в целом неважно.
Делаешь ли ты DECLARE_DYNAMIC и IMPLEMENT_DYNAMIC с правильными аргументами? Ты ж ведь пытаешься получать сообщения через OnChar? Для этого, во-первых в мессиджмапе должна быть запись WM_ON_CHAR, а во вторых сам мессиджмап для класса должен быть правильно встроен в дерево (при определении мессиджмапы родитель тоже должен быть указан правильно). А вообще для создания MFC-шных классов лучше пользоваться класс-визардом.

> Вопрос - куда деваются WM_CHAR и WM_KEYUP? Я пытался
> выяснить этот вопрос, переопределив PreTranslateMessage - в
> него приходят все три месседжа. Пытался шагать внутрь
> CWnd::PreTranslateMessage - ничего подозрительного не
> обнаружил, он всегда возвращает FALSE. В общем, имееся у
> меня некоторое непонимание. Инфорамации в Гугле не нашел.
> Буду благодарен за объяснения.
Претранслейт у диалога? Хм, а ты через spy++ смотрел, идут ли вообще такие сообщения в твое окно? Есть ли у него фокус как минимум

Вообще конечно, лучше б на сам код глянуть. Хотя бы в крайне упрощенном виде
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach