Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2011, 08:53   #1
tolmik
Пользователь
 
Регистрация: 30.03.2011
Сообщений: 46
Вопрос Как заставить работать 2 функции одновременно?

Доброе время суток, кто знает подскажите как на VS С++ сделать так чтобы 2 разные функции работали одновременно. смысл такой: есть функция ris(), ктр через определенное время выводит на экран графическую составляющую(ктр не зависимо от всего все время изменяется) и есть функция управления upr() ктр с помощью оператора switch() распознает какая клавиша была нажата, если клавиша была нажата то изменяются объекты в ris(). (К примеру шарик летает по окну, а при нажатии клавиши увеличивается) Или может есть какая-нибудь альтернатива этим функциям. Если можно поподробнее описываете, а то я только начинающий.
tolmik вне форума Ответить с цитированием
Старый 28.09.2011, 09:27   #2
fbus
Форумчанин
 
Аватар для fbus
 
Регистрация: 23.10.2008
Сообщений: 460
По умолчанию

смотри в сторону потоков. в отдельном потоке делаешь свою функцию для построения графика а в основном перехватываешь кнопку(например)
fbus вне форума Ответить с цитированием
Старый 28.09.2011, 12:53   #3
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

Соглашусь с выше сказанным, используй потоки, самый правильный способ.
Помог - жми на весы!
ByAlex89@mail.ru
ByAlex вне форума Ответить с цитированием
Старый 28.09.2011, 13:24   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Цитата:
используй потоки, самый правильный способ.
Зачем здесь потоки, тем более для начинающего.
Цитата:
а то я только начинающий
.
функциям совсем не надо работать одновременно, тем более что на однопроцессорном одноядерным(хотя теперь это и редкость) это и невозможно. Вполне достаточно будет исключить из этих функций их циклы
Цитата:
через определенное время выводит на экран
Цитата:
upr() ктр с помощью оператора switch() распознает какая клавиша была нажата,
оставив только:
текущее(разовое) рисование для ris
опрос(обработку) текущего состояния для upr

и вновь полученные функции вызывать в общем цикле.
Код:
while ()  // для окончания цикла здесь конечно же надо проверять какое-то условие, которое может и должно устанавливается в upr 
{ upr();
   ris();
}.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 28.09.2011 в 13:30.
evg_m вне форума Ответить с цитированием
Старый 28.09.2011, 14:44   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
evg_m
Абсолютно согласен, разве что я бы сначала вызывал ris а потом upr - Это я намекаю на пример кода, который малось не соответствует высказыванию
Цитата:
оставив только:
текущее(разовое) рисование для ris
опрос(обработку) текущего состояния для upr
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.09.2011, 17:23   #6
tolmik
Пользователь
 
Регистрация: 30.03.2011
Сообщений: 46
По умолчанию

Код:
while ()  // для окончания цикла здесь конечно же надо проверять какое-то условие, которое может и должно устанавливается в upr 
{ upr();
   ris();
}.
[/QUOTE]

насколько я понимаю, в таком случае функция ris() начнет работу только после upr(), а в upr() у меня оператор switch(), ктр отслеживает была ли нажата клавиша(и потом для каждой клавиши описаны изменения над объектами), а если клавиша нажата не будет, то программа никак не перейдет к следующей функции(в данном случае к функции ris()), а необходимо чтобы перешла.
tolmik вне форума Ответить с цитированием
Старый 29.09.2011, 13:06   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Цитата:
насколько я понимаю, в таком случае функция ris() начнет работу только после upr()
Ничто не мешает поменять их местами. Главное что в них не должно быть цикла, а использовать один общий цикл.
Цитата:
Абсолютно согласен, разве что я бы сначала вызывал ris а потом upr - Это я намекаю на пример кода, который малось не соответствует высказыванию
Цитата:
для каждой клавиши описаны изменения над объектами), а если клавиша нажата не будет, то программа никак не перейдет к следующей функции(в данном случае к функции ris()
если нет нажатий, то нет изменений. а если нет изменений, то и рисовать не надо. подождем до нажатия.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 29.09.2011 в 13:09.
evg_m вне форума Ответить с цитированием
Старый 29.09.2011, 14:09   #8
tolmik
Пользователь
 
Регистрация: 30.03.2011
Сообщений: 46
По умолчанию

Так дело в том что изменения есть!!! должен летать шарик, а при нажатии интера увеличиваться в размерах. если ничего не нажмем, то он зависнит в одной токе.
tolmik вне форума Ответить с цитированием
Старый 29.09.2011, 14:31   #9
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Цитата:
должен летать шарик, а при нажатии интера увеличиваться в размерах.
Цитата:
как на VS С++
что-то мне подсказывает что речь идет о игре на форме. В этом случае не нужно никаких циклов. все делается на Timer. подробности после подтверждения данной гипотезы. как вредно не приводить ни кусочка кода.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 29.09.2011, 14:36   #10
tolmik
Пользователь
 
Регистрация: 30.03.2011
Сообщений: 46
По умолчанию

да верно) я таймер использую для обновления изображения через каждые 0.10 сек и рисую поверх окна))
tolmik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как заставить работать в мазиле danila3 JavaScript, Ajax 0 20.12.2010 15:11
Как заставить работать скрипт x1233 JavaScript, Ajax 8 05.12.2010 10:41
Как заставить работать NFS 2 SE? Манжосов Денис :) Gamedev - cоздание игр: Unity, OpenGL, DirectX 6 02.11.2008 16:35
Как заставить работать php? yourself Помощь студентам 9 20.05.2008 08:08
Как заставить работать dll ? Volkogriz Общие вопросы Delphi 10 13.12.2007 10:24