информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медСтрашный баг в WindowsПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / beginners
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - 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-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach