![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
Belous |
|
||||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 8.11.2015 Репутация: нет Всего: нет |
Как сделать переход по элементам управления (э.у.) при нажатии <Tab>
В книжке Ч.Петзолд "Программирование для Windows 95" написано, что для этого нужно "введение новой оконной процедуры" (window subclassing). В тестовом примере я сделал почти так, как написано в книжке, за исключением: 1) у меня вместо 3 полос прокрутки - 3 кнопки; 2) у меня э.у. не в главном окне а в модальном. И код вынесен в модуль "Options.cpp", поэтому пришлось сделать static WNDPROC foptions[3]; иначе без волшебного слова static программа не компилируется. В итоге программа компилируется, а потом при выполнении вываливается с ошибкой (см рисунок) Вопрос как же сделать этот субклассинг? Добавлено через 42 секунды
Добавлено через 1 минуту и 38 секунд
Присоединённый файл ( Кол-во скачиваний: 6 ) ![]() |
||||
|
|||||
Belous |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 8.11.2015 Репутация: нет Всего: нет |
||||
|
||||
feodorv |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 9 Всего: 45 |
В суть вопроса не влезал. По падению программы: у Вас есть hwnd, зачем Вы в CallWindowProc передаёте foptions[i]?
И чему равно i? Точно меньше 3? А массив foptions инициализирован к моменту вызова CallWindowProc? -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||
|
|||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
это лучше заменить на GetDlgCtrlID, хотя, проблема конечно не в этом а вот это - уже проблема, т.к. вот здесь: i равен как раз одному из 1001..1003 -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
Belous |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 8.11.2015 Репутация: нет Всего: нет |
Исправил, все работает. Всем спасибо.
Это сообщение отредактировал(а) Belous - 11.3.2016, 19:20 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |