|
4 / 4 / 0
Регистрация: 26.09.2013
Сообщений: 33
|
|
Передача собственных переменных в обработчик событий26.09.2013, 21:58. Показов 2366. Ответов 6
Метки нет (Все метки)
Доброго времени суток!
Буквально недавно я начал понемножку разбираться в WinAPI. И одной из первых проблем, с которой я столкнулся, есть способ передачи собственной переменной в функции-обработчики событий диалоговых окон. Проблема состоит в следующем: В меню главного окна присутствует пункт, который вызывает диалоговое окно (ДО). В этом диалоговом окне осуществляется поиск файла в директориях. Если я правильно понимаю, то callback-функция моего диалогового окна вызывается снова и снова при любом действии с окном, то есть переменные, объявленные внутри функции постоянно стираются и снова появляются с каждым вызовом функции. То есть возникает проблема того, что я никаким образом не могу зафиксировать путь который я выбрал в ДО, кроме как создать какой-то контрол по типу editbox, в который я при каждом вызове буду записывать состояние пути к файлу и который позволит мне в дальнейших функциях считывать эту информацию и использовать ее. Но такой вариант меня не очень устраивает, так как я не собираюсь вводить такой контрол. Возникает вопрос: а как фиксировать определенные значения с помощью переменных, которые я хочу передать в функцию извне (НО НЕ ГЛОБАЛЬНЫХ), и потом использовать эти же переменные в других частях программы (например путь к файлу для открытия данного файла из другой функции)??? P.S. Извините если вопрос глупый, но я никак не могу придумать способ передачи переменных внутрь функции-обработчик...
0
|
|
| 26.09.2013, 21:58 | |
|
Ответы с готовыми решениями:
6
Обработчик событий TabControl Поменять обработчик событий Обработчик событий для консоли |
|
Исследователь
318 / 317 / 24
Регистрация: 06.04.2011
Сообщений: 872
|
|
| 27.09.2013, 04:43 | |
|
Способов несколько на самом деле. Все зависит от того, как вы создаете диалог. Если напишите какая функция используется для создания ДО, будет легче что-то подсказать
0
|
|
|
4 / 4 / 0
Регистрация: 26.09.2013
Сообщений: 33
|
|||||||||||
| 27.09.2013, 17:53 [ТС] | |||||||||||
P.S. С тем, как зафиксировать переменную внутри функции я уже разобрался - просто объявить ее как статик, а вот теперь хотелось бы узнать еще способ как вытащить из нее массив. Может возможно как-то вернуть указатель? Или еще что-то...
0
|
|||||||||||
|
Исследователь
318 / 317 / 24
Регистрация: 06.04.2011
Сообщений: 872
|
|
| 27.09.2013, 18:23 | |
|
В таком случае замените функцию вызова на DialogBoxParam() и передавайте в lParam указатель на переменную. А переменной может быть что угодно...
1
|
|
|
4 / 4 / 0
Регистрация: 26.09.2013
Сообщений: 33
|
|
| 27.09.2013, 19:17 [ТС] | |
|
Большое-пребольшое спасибо!
0
|
|
|
Заблокирован
|
|
| 28.09.2013, 10:26 | |
|
Нет ваще никакой функции, а параметр на неё я передаю NULL, странно конечно, но стабильно мне приходят сообщения WM_TIMER ))))
В моём случае таймер нужен только один и мне даже параметры его не нужны ... Сообщения из очереди с удалением я изымаю посредствам PeekMesssge WM_TIMER NO_REMOVE ))))
0
|
|
|
4 / 4 / 0
Регистрация: 26.09.2013
Сообщений: 33
|
||||||
| 28.09.2013, 20:28 [ТС] | ||||||
|
Хммм... Странно...
Я воспользовался функцией DialogBoxParam(). При этом в качестве параметра я передал ей указатель на массив типа WCHAR. Внутри функции-обработчика у меня есть еще один WCHAR массив, который я хочу выкинуть через переданный указатель за пределы функции. И вот что получается: я дохожу до того момента, когда мне надо скопировать данные из одного массива в другой, у меня программа прекращает работу... Присвоить глобальному указателю указатель на массив, содержащийся в функции у меня тоже не получилось - после проверки вне функции он показывает нулевой указатель... Пожалуйста подскажите каким еще образом можно вытянуть указатель из такой функции, или подскажите где ошибка:
0
|
||||||
| 28.09.2013, 20:28 | |
|
Помогаю со студенческими работами здесь
7
Обработчик событий клавиатуры для ListView
Как задать обработчик событий для элементов меню c++ WinAPI? Передача в функцию-обработчик потока объекта класса
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|