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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
Указатель? Зачем указатель? Хотя в целом неважно. 29.12.08 21:50  Число просмотров: 3974
Автор: 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++ смотрел, идут ли вообще такие сообщения в твое окно? Есть ли у него фокус как минимум

Вообще конечно, лучше б на сам код глянуть. Хотя бы в крайне упрощенном виде
<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