Переход по табам
От: Аноним  
Дата: 18.04.06 08:31
Оценка:
Дкелаю следующую вещь — леплю в окошко диалог как child window. Вопрос — можно ли в этом случае настроить переход по контролам по табу ?
Re: Переход по табам
От: _nn_ www.nemerleweb.com
Дата: 18.04.06 08:53
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Дкелаю следующую вещь — леплю в окошко диалог как child window. Вопрос — можно ли в этом случае настроить переход по контролам по табу ?


здесь
Автор: _nn_
Дата: 24.04.04
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: Переход по табам
От: Аноним  
Дата: 18.04.06 09:06
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Здравствуйте, Аноним, Вы писали:


А>>Дкелаю следующую вещь — леплю в окошко диалог как child window. Вопрос — можно ли в этом случае настроить переход по контролам по табу ?


__>здесь
Автор: _nn_
Дата: 24.04.04


Спасибо большое, то что надо Никогда бы сам не додумался
Re[2]: Переход по табам
От: Аноним  
Дата: 18.04.06 09:10
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Здравствуйте, Аноним, Вы писали:


А>>Дкелаю следующую вещь — леплю в окошко диалог как child window. Вопрос — можно ли в этом случае настроить переход по контролам по табу ?


__>здесь
Автор: _nn_
Дата: 24.04.04


А не могли бы в кратце рассказать почему так работает а без этого не работает ?
Re[3]: Переход по табам
От: _nn_ www.nemerleweb.com
Дата: 18.04.06 12:12
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, _nn_, Вы писали:


__>>Здравствуйте, Аноним, Вы писали:


А>>>Дкелаю следующую вещь — леплю в окошко диалог как child window. Вопрос — можно ли в этом случае настроить переход по контролам по табу ?


__>>здесь
Автор: _nn_
Дата: 24.04.04


А>А не могли бы в кратце рассказать почему так работает а без этого не работает ?


Пожалуйста

Когда вы пишите программу для Windows цикл обработки сообщений выглядит так:
while(GetMessage(...) != NULL) // Получить сообщение
{
 TranslateMesage(...); // Преобразует WM_KEYDOWN в WM_CHAR
 DispatchMessage(...); // Обработать сообщение.
}


В более высокоуровневых бибилотеках (ATL/WTL) эта часть спрятанна от вас.
Конкретно в WTL реализация находится в CAppModule.

Если вы хотели бы обрабатывать сообщения диалога в С вам нужно было бы вставить IsDialogMessage в цикл.

Следовательно одно решение это отнаследоваться от CAppModule и добавить вызов IsDialogMessage.
Однако проблема в том что это будет распостраняься на все приложение, что не есть хорошо.

Поэтому в WTL есть другой способ: через функцию PreTranslateMessage.
Это специальная функция которая вызывается до основного обработчика сообщений, и мы получаем нужный эффект.

P.S.
Советую вам ознакомиться с статьями о WTL здесь на сайте.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[4]: Переход по табам
От: Аноним  
Дата: 18.04.06 12:33
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Пожалуйста


__>Когда вы пишите программу для Windows цикл обработки сообщений выглядит так:

__>
__>while(GetMessage(...) != NULL) // Получить сообщение
__>{
__> TranslateMesage(...); // Преобразует WM_KEYDOWN в WM_CHAR
__> DispatchMessage(...); // Обработать сообщение.
__>}
__>


А разве таким образом без IsDialogMessage сообщение нажатия таба не отправится диалоговой процедуре ?

__>В более высокоуровневых бибилотеках (ATL/WTL) эта часть спрятанна от вас.

__>Конкретно в WTL реализация находится в CAppModule.

__>Поэтому в WTL есть другой способ: через функцию PreTranslateMessage.

__>Это специальная функция которая вызывается до основного обработчика сообщений, и мы получаем нужный эффект.

это я уже поисходникам всё выяснил
Re[5]: Переход по табам
От: _nn_ www.nemerleweb.com
Дата: 18.04.06 17:17
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, _nn_, Вы писали:


__>>Пожалуйста


__>>Когда вы пишите программу для Windows цикл обработки сообщений выглядит так:

__>>
__>>while(GetMessage(...) != NULL) // Получить сообщение
__>>{
__>> TranslateMesage(...); // Преобразует WM_KEYDOWN в WM_CHAR
__>> DispatchMessage(...); // Обработать сообщение.
__>>}
__>>


А>А разве таким образом без IsDialogMessage сообщение нажатия таба не отправится диалоговой процедуре ?


Из MSDN:

IsDialogMessage

This function determines whether a message is intended for the specified dialog box and, if it is, processes the message.


Дело в том, что диалог это особый вид окна, поэтому нужна другая обработка.

__>>В более высокоуровневых бибилотеках (ATL/WTL) эта часть спрятанна от вас.

__>>Конкретно в WTL реализация находится в CAppModule.

__>>Поэтому в WTL есть другой способ: через функцию PreTranslateMessage.

__>>Это специальная функция которая вызывается до основного обработчика сообщений, и мы получаем нужный эффект.

А>это я уже поисходникам всё выяснил
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.