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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2008, 12:13   #1
Alexej
Новичок
Джуниор
 
Регистрация: 05.05.2008
Сообщений: 2
По умолчанию VC++ биг трабл :(

Здравствуйте всем.

Я в VC решаю системы уравнений. Кое-как это вышло. Но сейчас нужно ко всему этот процесс визуализировать (то есть пошагово отображать результаты). А моих мощностей, к сожалению, на данном этапе не хватает. К тому же времени до защиты осталось чуть больше недели. Я в программировании слабоват совсем пока, поэтому решил обратиться к гуру, может, кто подскажет из специалистов.
Дело в чем: у меня есть главная процедура в ней нужно сделать остановки и продолжать толи по нажатию кнопки, толи просто по таймеру,но начально эо не предуматривалось и теперь не знаю возможно так сделать при такой структуре

Код:
void CZGaussDlg::ZGauss(double *pA, double *pB, double *pX, int n)
{	
	for(int j=0;j<(n-1);j++)
	{
		int m=MaxElem(pA,j,n);
// 1 Первая остановка
		ChangeRow(pA,pB,j,m,n);
// 2 Вторая остановка
		ExchangeData(pM,pF,n);
		for (int i=j+1;i<n;i++)
		{
			SumRow(pA,pB,j,i,n);
// 3 Третья осановка
			ExchangeData(pM,pF,n);
		}
	}
	//обратный ход
	UpdateData(FALSE);
	for (int i=(n-1);i>=0;i--)
	{								
		double s=pB[i];				

		double *p=pA+i*(n+1)+1;		

		for (j=i+1;j<n;j++,p++)
		{
			s-=*p*pX[j];			
		
		}
		pX[i]=s/ *(pA+i*(n+1));		
	}
// 4 Четвертая остановка
	ExchangeData(pM,pF,n);
	//перед неизв
	for (i=0; i<n; i++)
		for (int j=0; j<(n*n); j+=n)
			SetDlgItemInt(30000+i+j,pX[i]);
	m_calc_on_step.EnableWindow(FALSE);
	UpdateData(FALSE);
}
1,2,3,4: вот в этих местах мне нужно делать паузу,чтоб пользователь видел что происходит с матрицей. Ребят, подскажите возможно это сделать при такой структуре или мои дела совсем плохи?
Alexej вне форума Ответить с цитированием
Старый 05.05.2008, 13:44   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Можно выделить эту функцию в отдельный поток и синхронизировать выполнение обычным в таких случаях образом - в функции ждать по WaitForSingleObject, а в интерфейсе, по нажатию кнопки, скажем, выставлять сигнал по SetEvent. Можно сделать в одном потоке, а в нужных местах ставить обычный цикл из GetMessage - IsDialogMessage - TranslateMessage - DispatchMessage и ждать в нём нажатия кнопки. Можно, наконец, просто разбить эту функцию на несколько частей.
B_N вне форума Ответить с цитированием
Старый 05.05.2008, 14:30   #3
Alexej
Новичок
Джуниор
 
Регистрация: 05.05.2008
Сообщений: 2
По умолчанию

Спасибо Вам за свет в конце туннеля. теперь, надеюсь, я не совсем пропал
Мне понравился первый и особенно второй вариант. Вот только WaitForSingleObject и GetMessage мне совсем не знакомы, а МСДН по этому поводу говорит мало да и на английском
Если Вам не составит сложностей, не могли бы Вы дать простой примерчик, если есть. или дать ссылку где об этом подробно описано?
Alexej вне форума Ответить с цитированием
Старый 05.05.2008, 16:52   #4
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Смотрите пример в аттаче. Там самый простой вариант - через SuspendThread/ResumeThread.
Вложения
Тип файла: rar Sync.rar (300.5 Кб, 9 просмотров)
B_N вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
трабл со списком.... хелп!!!! Yonka HTML и CSS 1 15.06.2008 13:07