Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нестандартное добавление элемента? БАШНЯ ДЫМИТСЯ! 
:(
    Опции темы
TimPP
  Дата 22.5.2003, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуй мудрейший ALL!

Пишу ATL - DLL. Из основного окна приложения поймал CWnd диалогового окна, как мне добавить в него еще один элемент, к примеру свой Grid?

Спасибо!

Это сообщение отредактировал(а) TimPP - 23.5.2003, 14:26
PM MAIL   Вверх
Step
Дата 22.5.2003, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



созадть его динамически, с парентом пойманого окна....


вопрос только в том как ты его обрабатывать будеш


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
TimPP
Дата 22.5.2003, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я его создал он работает, но не ловит ENTER и TAB, при этом переходит на другие элементы диалога.
Но я его создавал просто как, наследника CWnd и говорил ему, что Parent`ом является найденный HWND.


Это сообщение отредактировал(а) TimPP - 22.5.2003, 18:00
PM MAIL   Вверх
Nastya
Дата 22.5.2003, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

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



На счет ENTER
Цитата
вопрос только в том как ты его обрабатывать будеш

На счет TAB, это надо в стилях покопаться.

Цитата
Но я его создавал просто как, наследника CWnd и говорил ему, что Parent`ом является найденный HWND.


Ты бы код привел


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
TimPP
Дата 23.5.2003, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



На форме есть кнопка которая создавала мой элемент, я фокусируюсь на моей таблице, работаю с ней, но если нажимаю ENTER (на моей таблице), она создается еще раз hehe.gif


Код

// Подготавливаем сообщение, если будет исключение
PrepError ( "Не могу создать элемент!" );

// Ищем диалоговое окно
CWnd* _wnd = FindOwner ( ppValue );

if ( _wnd == 0 )
{
 AlertMsg ( "ОШИБКА: Не могу найти диалоговое окно!" );
 rValue = (long)0;
 return 0;
}

// Ищем элемент диалога который надо заменить
CWnd* _bwnd = FindButton ( _wnd, ppValue[1]->GetString () );

if ( _bwnd == 0 )
{
 AlertMsg ( "ОШИБКА: Не могу найти кнопку!" );
 rValue = (long)0;
 return 0;
}

RECT _brect; _bwnd->GetWindowRect ( &_brect );
RECT _drect; _wnd->GetWindowRect ( &_drect );

_brect.left -= _drect.left;
_brect.top -= _drect.top;
_brect.right -= _drect.left;
_brect.bottom -= _drect.top;

// Прячем старый элемент
_bwnd->ShowWindow ( SW_HIDE );

// Создаем таблицу ( все параметры напрямую передаются CWnd )
if ( !_grid->Create ( _brect, _wnd, nID, WS_CHILD | WS_BORDER | WS_TABSTOP | WS_VISIBLE ) )
{
 AlertMsg ( "ОШИБКА: Не могу создать таблицу!" );
 rValue = (long)0;
 return 0;
}

TraceMsg ( "Успешно создали таблицу." );

rValue = (long)1;

PM MAIL   Вверх
Step
Дата 23.5.2003, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



по вододу интера и таб, я думаю сообщения просто не тому окну идут. поставь сеткаптуре


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
TimPP
Дата 23.5.2003, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Не могу понять чем мне поможет SetCapture?
Прикол еще заключается в том, что при обходе элементов диалога клавишами - стрелками, фокус попадает в табличку и в ней дальше ходит курсор. А когда TAB`ом обходишь, то он в нее даже не попадает?

Но, хрен с ним с TAB`ом мне главное, что бы я ENTER у себя мог поймать.


Это сообщение отредактировал(а) TimPP - 23.5.2003, 14:26
PM MAIL   Вверх
Step
Дата 23.5.2003, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



TimPP все сообщения будут идти тебе вот и получиш свой ентер


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
TimPP
Дата 23.5.2003, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Не работает! Тем более на сколько я знаю SetCapture перенаправляет только мышинные сообщения.

PM MAIL   Вверх
Step
Дата 23.5.2003, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



клавиатурные тоже


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
TimPP
Дата 23.5.2003, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Еще забадяга, я настроил Hook на отлов всех идущих сообщений, ловлю нажатие любых клавиш и перенаправляю все себе, но все равно переход по TAB`у срабатывает?confused.gif
PM MAIL   Вверх
Step
Дата 23.5.2003, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



ты должен заблокировать дольнейшую отправку, и хоок разный может быть, тебе надо ловить до передачи окнам, а не после.. там режими выставляються посмотри в хелпе


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
TimPP
Дата 27.5.2003, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Хорошо, ни хрена не получается с этими хуками - шмуками, ну и Бог с ними.
Меняем постановку вопроса. Если нужно динамически добавлять, убирать элементы уже существующего диалога ( на лету ). Как настроить нормальное получение сообщений в новых элементах?

Спасибо.

Это сообщение отредактировал(а) TimPP - 27.5.2003, 16:28
PM MAIL   Вверх
DENNN
Дата 27.5.2003, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

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



Цитата
Как настроить нормальное получение сообщений в новых элементах?

Проще всего воспользоваться стандартным WinAPI - элементы точно также шлют сообщения родителю, просто в MFC коде у тебя нет соответствующих макросов smile.gif
PM ICQ   Вверх
TimPP
Дата 28.5.2003, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Что бы остановить сообщение и направить ко мне в MFC используется функция PreTranslateMessage, а если я добавляю элемент просто API, то в эту функцию даже не попадаю! Как быть?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

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


 




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


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

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