Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PreTranslateMessage не вызывается 
:(
    Опции темы
Egoryan
Дата 25.2.2008, 02:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 22.7.2006

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



Всем Доброго времени суток.


Создаю я диалог с помощью CreateIndirect. На нем TabCtrl(в каждом из них тоже по CDialog). Возникла такая проблема. Не вызывается PreTranslateMessage в диалогах(чтобы с помощью таба можно было перемещаться по контролам). Помогите пожалуйста!


Заранее спасибо!
PM MAIL   Вверх
Earnest
Дата 26.2.2008, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Почему ты решил, что не вызывается?


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


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 22.7.2006

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



Цитата(Earnest @ 26.2.2008,  12:32)
Почему ты решил, что не вызывается?

Ну потому что 

BOOL CABCDialog::PreTranslateMessage(MSG* msg)
{
          AfxMessageBox("123");
          CDialog::PreTranslateMessage(msg);
}


messagebox ни разу не вызвался.
PM MAIL   Вверх
Earnest
Дата 27.2.2008, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Если у тебя правильно построенное MFC-приложение, и диалог ты запускаешь через MFC-средства, то PreTranslate вызываться должна - она вызывается из главного цикла обработки сообщений или из цикла DoModal.
Так что вижу 2 возможных причины:
1) Что-то не так с переопределением виртуальной функции. Чтобы проверить - поставь точку прерывания в CDialog::PreTranslateMessage. Если туда попадешь, а к себе нет - проверь определение PreTranslate у себя, наследование, перекомпилируй проект, ... бывает всякое. Если не попадаешь, то см. далее:
2) Проверь, как выполняется главный цикл....

Еще мысль: если ты имеешь в виду те диалоги, которые детями сидят в tab-контроле, то PreTranslate такому диалогу может прийти только, если его собственный чайлд находится в фокусе. Посмотри, как устроены вызовы PreTranslate (в CWinThread), и тебе многое станет понятно.


--------------------
...
PM   Вверх
Egoryan
Дата 28.2.2008, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 22.7.2006

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



Все бы хорошо,но я окно упаковываю в DLL Обычную.
PM MAIL   Вверх
Earnest
Дата 28.2.2008, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Если у тебя Extension DLL + MFC приложение, то все равно должно работать.
А если нет (хотя бы одно условие), но PreTranslate вызываться не будет: это свойство MFC-Оболочки, и без фреймворка оно не работает.



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


 




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


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

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