<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414579&amp;view=findpost&amp;p=3795460</guid>
        <pubDate>Fri, 12 Apr 2019 09:31:22 +0000</pubDate>
        <title>Проблема с работой потока</title>
        <link>https://forum.sources.ru/index.php?showtopic=414579&amp;view=findpost&amp;p=3795460</link>
        <description><![CDATA[Олег М: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414579&view=findpost&p=3795458'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>erslgoeirjh &#064; <time class="tag-quote__quoted-time" datetime="2019-04-12T12:23:41+03:00">12.04.19, 09:23</time></span><div class='quote '>Что Вы предлагаете сделать вместо этого?</div></div><br>
Убрать это. Что этот код делает, ждёт самого себя? Поток pCalcDialog)-&gt;hThread во время этого вызова выполняет функцию CControlPointDialog::OnBnClickedOk()<br>
Там даже переменные выставлять не надо - просто завершай диалог EndDialog(код_завершения), а переменные выставляй по результатам вызова DoModal()]]></description>
        <author>Олег М</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414579&amp;view=findpost&amp;p=3795458</guid>
        <pubDate>Fri, 12 Apr 2019 09:23:41 +0000</pubDate>
        <title>Проблема с работой потока</title>
        <link>https://forum.sources.ru/index.php?showtopic=414579&amp;view=findpost&amp;p=3795458</link>
        <description><![CDATA[erslgoeirjh: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414579&view=findpost&p=3795437'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Олег М &#064; <time class="tag-quote__quoted-time" datetime="2019-04-12T07:04:58+00:00">12.04.19, 07:04</time></span><div class='quote '>Ты делаешь controlPointDialog.DoModal();, а потом в том же потоке - void CControlPointDialog::OnBnClickedOk() -  WaitForSingleObject(((CCalcDialog*)pCalcDialog)-&gt;hThread,INFINITE); т.е. поток ждёт завершения самого себя, INFINITE. Думаю, долго придётся ждать.</div></div><br>
Что Вы предлагаете сделать вместо этого?]]></description>
        <author>erslgoeirjh</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414579&amp;view=findpost&amp;p=3795437</guid>
        <pubDate>Fri, 12 Apr 2019 07:04:58 +0000</pubDate>
        <title>Проблема с работой потока</title>
        <link>https://forum.sources.ru/index.php?showtopic=414579&amp;view=findpost&amp;p=3795437</link>
        <description><![CDATA[Олег М: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414579&view=findpost&p=3795430'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>erslgoeirjh &#064; <time class="tag-quote__quoted-time" datetime="2019-04-12T06:45:05+00:00">12.04.19, 06:45</time></span><div class='quote '>В чём причина этого? Как исправить эту ошибку?</div></div><br>
Ты делаешь controlPointDialog.DoModal();, а потом в том же потоке - void CControlPointDialog::OnBnClickedOk() -  WaitForSingleObject(((CCalcDialog*)pCalcDialog)-&gt;hThread,INFINITE); т.е. поток ждёт завершения самого себя, INFINITE. Думаю, долго придётся ждать. <br>
<br>
В CControlPointDialog не надо вызывать CDialogEx::OnOK(); вызывай void EndDialog(int nResult); тогда controlPointDialog.DoModal() вернёт нужный результат<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">int res = controlPointDialog.DoModal();</div><div class="code_line">if (res = ID_STOP)</div><div class="code_line">&nbsp;&nbsp; &nbsp;return;</div><div class="code_line">else f (res = ID_CONTINUE)</div><div class="code_line">&nbsp;&nbsp; &nbsp;continue;</div><div class="code_line">else if (res = ID_SAVE)</div><div class="code_line">&nbsp;&nbsp; &nbsp;Save();</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>Олег М</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414579&amp;view=findpost&amp;p=3795430</guid>
        <pubDate>Fri, 12 Apr 2019 06:45:05 +0000</pubDate>
        <title>Проблема с работой потока</title>
        <link>https://forum.sources.ru/index.php?showtopic=414579&amp;view=findpost&amp;p=3795430</link>
        <description><![CDATA[erslgoeirjh: Я убрал локальную переменную myStruct типа MyStruct, оставил только член класса CCalcDialog поле myStruct типа MyStruct--и поток стал нормально работать.<br>
<br>
Но возникла другая проблема. По кнопке &quot;Остановить&quot; на диалоге CalcDialog происходит приостановка действия потока и появляется окно ControlPointDIalog, в котором отображаются данные на текущем шаге вычислений. На диалоге ControlPointDialog находятся кнопки &quot;Сохранить&quot; (пока не работает), &quot;Продолжить&quot; и &quot;Завершить&quot;. При нажатии на кнопку &quot;Продолжить&quot; должно произойти продолжение действия потока, а при нажатии на кнопку &quot;Завершить&quot; должно произойти завершение работы потока. Для обработки нажатия обеих этих кнопок написан код, регулирующий действия потока. (Переменная *threadflag при значении 0 означает завершение работы потока, при значении 1 означает выполнение потока, при значении 2 означает приостановку выполнения потока).<br>
Однако после того, как была нажата кнопка остановить на диалоге CalcDialog и появился диалог ControlPointDialog с информацией о данных на текущем шаге вычислений, то после нажатия кнопки &quot;Продолжить&quot; или &quot;Завершить&quot; ничего не происходит--окно ControlPointDialog продолжает отображаться на экране, а поток не продолжает своё действие и не завершается.<br>
<br>
В чём причина этого? Как исправить эту ошибку?<br>
<br>
код в файле CalcDialog.cpp:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">void CCalcDialog::OnBnClickedButton2()</div><div class="code_line">// если была нажата кнопка &quot;Остановить&quot;</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;// TODO: добавьте свой код обработчика уведомлений</div><div class="code_line">&nbsp;&nbsp; &nbsp;myStruct.threadflag = 2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (timerTest==true)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;timerTest = false;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;KillTimer(ID_TIMER_1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;timerCount = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void &nbsp;CCalcDialog::OnTimer(UINT uTime)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (myStruct.isthreadfinished==true)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;KillTimer(ID_TIMER_1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;timerTest = false;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;timerCount = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;CloseHandle(hThread);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;isthreadfinished = true;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// считывание полученных значений;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (timerCount&#62;=100) &nbsp;timerCount = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;timerCount++;</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
<br>
в функции MyInnerThreadFunc--внутри цикла do...while:<br>
<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">if (*threadflag==0)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// если была послана команда выйти из вычислений</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// очистка памяти, если нужно;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AfxMessageBox(L&quot;Вычисления были прерваны.&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (*threadflag==2)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// если была послана команда приостановить вычисления</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// выдача значений в ControlPointDialog</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CControlPointDialog &nbsp;controlPointDialog;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;controlPointDialog.pCalcDialog = pCalcDialog;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (countline==0)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;controlPointDialog.setValues(0,L&quot;&quot;,0,0,0,0,0,0,0,0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;swprintf(wsdatetime,39,L&quot;%d.%02d.%02d/%02d:%02d:%06.3f&quot;,year,month,day,hour,minute,second);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Hpi = rpi - REarth/AE;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Hpi = Hpi * AE;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Halpha = ralpha - REarth/AE;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Halpha = Halpha * AE;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;controlPointDialog.setValues(1,wsdatetime,a*AE,e,ild/PI*180.0,Omega/PI*180.0,w/PI*180.0,M0/PI*180.0,Hpi,Halpha);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;controlPointDialog.DoModal();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;while (dwWaitResult!=WAIT_OBJECT_0)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dwWaitResult = WaitForSingleObject(myevent,1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (*threadflag==0)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// очистка памяти, если необходимо;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AfxMessageBox(L&quot;Вычисления были прерваны.&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dwWaitResult = 100;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div></ol></div></div></div></div><br>
<br>
<br>
код файла ControlPointDialog.cpp:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">extern &nbsp;HANDLE &nbsp;myevent; // переменная myevent определена в файле CalcDialog.cpp</div><div class="code_line">&nbsp;</div><div class="code_line">// диалоговое окно CControlPointDialog</div><div class="code_line">&nbsp;</div><div class="code_line">IMPLEMENT_DYNAMIC(CControlPointDialog, CDialogEx)</div><div class="code_line">&nbsp;</div><div class="code_line">CControlPointDialog::CControlPointDialog(CWnd* pParent /*=NULL*/)</div><div class="code_line">&nbsp;&nbsp; &nbsp;: CDialogEx(CControlPointDialog::IDD, pParent)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;type = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;wcscpy(wsdatetime,L&quot;&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;a = e = ild = Omega = w = M0 = Hpi = Halpha = 0.0;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">CControlPointDialog::~CControlPointDialog()</div><div class="code_line">{</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void CControlPointDialog::DoDataExchange(CDataExchange* pDX)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;CDialogEx::DoDataExchange(pDX);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_BUTTON1, m_IDC_BUTTON1);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDOK, m_IDOK);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_BUTTON2, m_IDC_BUTTON2);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_STATIC1, m_IDC_STATIC1);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_LIST1, m_IDC_LIST1);</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">BEGIN_MESSAGE_MAP(CControlPointDialog, CDialogEx)</div><div class="code_line">&nbsp;&nbsp; &nbsp;ON_BN_CLICKED(IDOK, &amp;CControlPointDialog::OnBnClickedOk)</div><div class="code_line">&nbsp;&nbsp; &nbsp;ON_BN_CLICKED(IDC_BUTTON1, &amp;CControlPointDialog::OnBnClickedButton1)</div><div class="code_line">&nbsp;&nbsp; &nbsp;ON_BN_CLICKED(IDC_BUTTON2, &amp;CControlPointDialog::OnBnClickedButton2)</div><div class="code_line">&nbsp;</div><div class="code_line">END_MESSAGE_MAP()</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">// обработчики сообщений CControlPointDialog</div><div class="code_line">&nbsp;</div><div class="code_line">BOOL &nbsp;CControlPointDialog::OnInitDialog()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;int &nbsp;i, n;</div><div class="code_line">&nbsp;&nbsp; &nbsp; wchar_t &nbsp;ws[40];</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CDialog::OnInitDialog();</div><div class="code_line">&nbsp;&nbsp; &nbsp;m_IDC_LIST1.InsertColumn(0,L&quot; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Время t&quot;,LVCFMT_CENTER,150);</div><div class="code_line">&nbsp;&nbsp; &nbsp;m_IDC_LIST1.InsertColumn(1,L&quot;Большая полуось a&quot;,LVCFMT_CENTER,150);</div><div class="code_line">&nbsp;&nbsp; &nbsp;m_IDC_LIST1.InsertColumn(2,L&quot;Эксцентриситет e&quot;,LVCFMT_CENTER,150);</div><div class="code_line">&nbsp;&nbsp; &nbsp;m_IDC_LIST1.InsertColumn(3,L&quot;Наклонение i&quot;,LVCFMT_CENTER,150);</div><div class="code_line">&nbsp;&nbsp; &nbsp;m_IDC_LIST1.InsertColumn(4,L&quot;ДВУ ?&quot;,LVCFMT_CENTER,150);</div><div class="code_line">&nbsp;&nbsp; &nbsp;m_IDC_LIST1.InsertColumn(5,L&quot;Аргумент перицентра ?&quot;,LVCFMT_CENTER,150);</div><div class="code_line">&nbsp;&nbsp; &nbsp;m_IDC_LIST1.InsertColumn(6,L&quot;Средняя аномалия M0&quot;,LVCFMT_CENTER,150);</div><div class="code_line">&nbsp;&nbsp; &nbsp;m_IDC_LIST1.InsertColumn(7,L&quot;Высота перигея H?&quot;,LVCFMT_CENTER,150);</div><div class="code_line">&nbsp;&nbsp; &nbsp;m_IDC_LIST1.InsertColumn(8,L&quot;Высота апогея H?&quot;,LVCFMT_CENTER,150);</div><div class="code_line">&nbsp;&nbsp; &nbsp;m_IDC_LIST1.InsertItem(0,L&quot;&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;LOGFONT &nbsp;lf;</div><div class="code_line">&nbsp;&nbsp; &nbsp;memset(&amp;lf,0,sizeof(lf));</div><div class="code_line">&nbsp;&nbsp; &nbsp;lf.lfHeight = 14;</div><div class="code_line">&nbsp;&nbsp; &nbsp;lf.lfWidth = 6;</div><div class="code_line">&nbsp;&nbsp; &nbsp;lf.lfWeight = FW_BOLD;</div><div class="code_line">&nbsp;&nbsp; &nbsp;wcscpy(lf.lfFaceName,L&quot;MS Sans Serif&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;CFont *pFont = new CFont();</div><div class="code_line">&nbsp;&nbsp; &nbsp;pFont-&#62;CreateFontIndirect(&amp;lf);</div><div class="code_line">&nbsp;&nbsp; &nbsp;m_IDC_STATIC1.SetFont(pFont);</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (type==0)</div><div class="code_line">&nbsp;&nbsp; &nbsp;// если нет значений элементов орбиты</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (i=0; i&#60;9; i++)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_IDC_LIST1.SetItemText(0,i,L&quot;&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (type==1)</div><div class="code_line">&nbsp;&nbsp; &nbsp;// если есть значения элементов орбиты</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;m_IDC_LIST1.SetItemText(0,0,wsdatetime); // дата и время</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;swprintf(ws,39,L&quot;%f&quot;,a);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;m_IDC_LIST1.SetItemText(0,1,ws); // большая полуось a</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;swprintf(ws,39,L&quot;%f&quot;,e);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;m_IDC_LIST1.SetItemText(0,2,ws); // эксцентриситет e</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;swprintf(ws,39,L&quot;%f&quot;,ild);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;m_IDC_LIST1.SetItemText(0,3,ws); // наклонение i</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;swprintf(ws,39,L&quot;%f&quot;,Omega);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;m_IDC_LIST1.SetItemText(0,4,ws); // долгота восходящего узла Omega</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;swprintf(ws,39,L&quot;%f&quot;,w);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;m_IDC_LIST1.SetItemText(0,5,ws); // аргумент перицентра w</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;swprintf(ws,39,L&quot;%f&quot;,M0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;m_IDC_LIST1.SetItemText(0,6,ws); // средняя аномалия M0</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;swprintf(ws,39,L&quot;%f&quot;,Hpi);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;m_IDC_LIST1.SetItemText(0,7,ws); // высота перигея Hpi</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;swprintf(ws,39,L&quot;%f&quot;,Halpha);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;m_IDC_LIST1.SetItemText(0,8,ws); // высота апогея Halpha</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;return TRUE;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void CControlPointDialog::OnBnClickedOk()</div><div class="code_line">// если была нажата кнопка &quot;Завершить&quot;</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;// TODO: добавьте свой код обработчика уведомлений</div><div class="code_line">&nbsp;&nbsp; &nbsp;((CCalcDialog*)pCalcDialog)-&#62;myStruct.threadflag = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;myevent = CreateEvent(NULL,TRUE,FALSE,L&quot;First Step&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (myevent!=NULL)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;SetEvent(myevent);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Sleep(1000);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;ResetEvent(myevent);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;CloseHandle(myevent);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;WaitForSingleObject(((CCalcDialog*)pCalcDialog)-&#62;hThread,INFINITE);</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (((CCalcDialog*)pCalcDialog)-&#62;isthreadfinished==false)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;CloseHandle(((CCalcDialog*)pCalcDialog)-&#62;hThread);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;((CCalcDialog*)pCalcDialog)-&#62;isthreadfinished = true;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (((CCalcDialog*)pCalcDialog)-&#62;timerTest==true)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;((CCalcDialog*)pCalcDialog)-&#62;timerTest = false;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;KillTimer(ID_TIMER_1);</div><div class="code_line">&nbsp;&nbsp; &nbsp;} </div><div class="code_line">&nbsp;&nbsp; &nbsp;// выдача значений в CCalcDialog;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CDialogEx::OnOK();</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">void CControlPointDialog::OnBnClickedButton1()</div><div class="code_line">// если была нажата кнопка &quot;Продолжить&quot;</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;// TODO: добавьте свой код обработчика уведомлений</div><div class="code_line">&nbsp;&nbsp; &nbsp;((CCalcDialog*)pCalcDialog)-&#62;myStruct.threadflag = 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;((CCalcDialog*)pCalcDialog)-&#62;myStruct.isthreadfinished = false;</div><div class="code_line">&nbsp;&nbsp; &nbsp;((CCalcDialog*)pCalcDialog)-&#62;timerCount = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;((CCalcDialog*)pCalcDialog)-&#62;timerTest = true;</div><div class="code_line">&nbsp;&nbsp; &nbsp;SetTimer(ID_TIMER_1,500,NULL);</div><div class="code_line">&nbsp;&nbsp; &nbsp;myevent = CreateEvent(NULL,TRUE,FALSE,L&quot;First Step&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (myevent!=NULL)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;SetEvent(myevent);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Sleep(1000);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;ResetEvent(myevent);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;CloseHandle(myevent);</div><div class="code_line">&nbsp;&nbsp; &nbsp;} </div><div class="code_line">&nbsp;&nbsp; &nbsp;CDialogEx::OnOK();</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">void CControlPointDialog::OnBnClickedButton2()</div><div class="code_line">// если была нажата кнопка &quot;Сохранить&quot;</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;// TODO: добавьте свой код обработчика уведомлений</div><div class="code_line">&nbsp;&nbsp; &nbsp;// сохранение информации для контрольной точки;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void &nbsp;CControlPointDialog::setValues(int type, wchar_t *wsdatetime, long double a, long double e, long double ild, long double Omega, long double w, long double M0, long double Hpi, long double Halpha)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;this-&#62;type = type;</div><div class="code_line">&nbsp;&nbsp; &nbsp;wcscpy(this-&#62;wsdatetime,wsdatetime);</div><div class="code_line">&nbsp;&nbsp; &nbsp;this-&#62;a = a;</div><div class="code_line">&nbsp;&nbsp; &nbsp;this-&#62;e = e;</div><div class="code_line">&nbsp;&nbsp; &nbsp;this-&#62;ild = ild;</div><div class="code_line">&nbsp;&nbsp; &nbsp;this-&#62;Omega = Omega;</div><div class="code_line">&nbsp;&nbsp; &nbsp;this-&#62;w = w;</div><div class="code_line">&nbsp;&nbsp; &nbsp;this-&#62;M0 = M0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;this-&#62;Hpi = Hpi;</div><div class="code_line">&nbsp;&nbsp; &nbsp;this-&#62;Halpha = Halpha;</div><div class="code_line">}</div></ol></div></div></div></div>]]></description>
        <author>erslgoeirjh</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414579&amp;view=findpost&amp;p=3795369</guid>
        <pubDate>Thu, 11 Apr 2019 11:56:29 +0000</pubDate>
        <title>Проблема с работой потока</title>
        <link>https://forum.sources.ru/index.php?showtopic=414579&amp;view=findpost&amp;p=3795369</link>
        <description><![CDATA[erslgoeirjh: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414579&view=findpost&p=3795350'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Олег М &#064; <time class="tag-quote__quoted-time" datetime="2019-04-11T08:35:45+00:00">11.04.19, 08:35</time></span><div class='quote '><br>
Я думал это у тебя просто ошибка, типа опечатка. <br>
У тебя же в классе объявлена myStruct, для чего? Используй её. А ту которая на стеке вообще убери, она будет уничтожена сразу после вызова _beginthreadex, при выходе из функции, а ты передаёшь указатель на неё в поток.<br>
</div></div><br>
<br>
Ясно, понял. Спасибо&#33;]]></description>
        <author>erslgoeirjh</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414579&amp;view=findpost&amp;p=3795350</guid>
        <pubDate>Thu, 11 Apr 2019 08:35:45 +0000</pubDate>
        <title>Проблема с работой потока</title>
        <link>https://forum.sources.ru/index.php?showtopic=414579&amp;view=findpost&amp;p=3795350</link>
        <description><![CDATA[Олег М: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414579&view=findpost&p=3795349'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>erslgoeirjh &#064; <time class="tag-quote__quoted-time" datetime="2019-04-11T08:31:14+00:00">11.04.19, 08:31</time></span><div class='quote '>А как сделать по-другому?</div></div><br>
Я думал это у тебя просто ошибка, типа опечатка. <br>
У тебя же в классе объявлена myStruct, для чего? Используй её. А ту которая на стеке вообще убери, она будет уничтожена сразу после вызова _beginthreadex, при выходе из функции, а ты передаёшь указатель на неё в поток.]]></description>
        <author>Олег М</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414579&amp;view=findpost&amp;p=3795349</guid>
        <pubDate>Thu, 11 Apr 2019 08:31:14 +0000</pubDate>
        <title>Проблема с работой потока</title>
        <link>https://forum.sources.ru/index.php?showtopic=414579&amp;view=findpost&amp;p=3795349</link>
        <description><![CDATA[erslgoeirjh: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414579&view=findpost&p=3795347'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Олег М &#064; <time class="tag-quote__quoted-time" datetime="2019-04-11T08:19:34+00:00">11.04.19, 08:19</time></span><div class='quote '><br>
Наверное в том, что у тебя myStruct обявлена на стеке<br>
</div></div><br>
<br>
А как сделать по-другому?]]></description>
        <author>erslgoeirjh</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414579&amp;view=findpost&amp;p=3795347</guid>
        <pubDate>Thu, 11 Apr 2019 08:19:34 +0000</pubDate>
        <title>Проблема с работой потока</title>
        <link>https://forum.sources.ru/index.php?showtopic=414579&amp;view=findpost&amp;p=3795347</link>
        <description><![CDATA[Олег М: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414579&view=findpost&p=3795336'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>erslgoeirjh &#064; <time class="tag-quote__quoted-time" datetime="2019-04-11T06:43:18+00:00">11.04.19, 06:43</time></span><div class='quote '>В чём причина этого? </div></div><br>
Наверное в том, что у тебя myStruct обявлена на стеке<br>
<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414579&view=findpost&p=3795336'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>erslgoeirjh &#064; <time class="tag-quote__quoted-time" datetime="2019-04-11T06:43:18+00:00">11.04.19, 06:43</time></span><div class='quote '>void CCalcDialog::OnBnClickedButton1()<br>
// если была нажата кнопка &quot;Рассчитать&quot;<br>
{<br>
    int sat;<br>
................<br>
    bool  isFalled;<br>
    MyStruct  myStruct;</div></div>]]></description>
        <author>Олег М</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414579&amp;view=findpost&amp;p=3795336</guid>
        <pubDate>Thu, 11 Apr 2019 06:43:18 +0000</pubDate>
        <title>Проблема с работой потока</title>
        <link>https://forum.sources.ru/index.php?showtopic=414579&amp;view=findpost&amp;p=3795336</link>
        <description><![CDATA[erslgoeirjh: У меня вызывается поток с помощью функции _beginthreadex. При этом потоковая функция при вызове _beginthreadex--MyThreadFunc. Эта функция MyThreadFunc вызывает функцию MyInnerThreadFunc, в которой и выполняются все действия.<br>
При этом в функции MyInnerThreadFunc происходит проверка на значение переменной *threadflag. (Значения переменной *threadflag: 0--завершить вычисления (т.е. завершить выполнение потока), 1--делать вычисления (т.е. выполнять поток), 2--приостановить вычисления (т.е. приостановить выполнение потока) ).<br>
Перед запуском потока переменной *threadflag было задано значение 1--выполнять поток. Но внутри функции MyInnerThreadFunc в одном из мест проверки значения переменной *threadflag оказывается, что это значение равно 0, хотя внешне поток ниоткуда не прерывался. И как следствие этого--происходит выход из функции MyInnerThreadFunc, завершение работы MyThreadFunc и завершение работы потока.<br>
<br>
В чём причина этого? Как сделать так, чтобы значение переменной *threadflag не менялось внутри функции MyInnerThreadFunc, если внешне не было команды завершить поток?<br>
<br>
Код:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">typedef struct</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;volatile int threadflag;</div><div class="code_line">&nbsp;&nbsp; &nbsp;bool &nbsp;isthreadfinished;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int &nbsp;sat;</div><div class="code_line">&nbsp;&nbsp; &nbsp;long &nbsp;jt0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;long double &nbsp;tj0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;long double &nbsp;step;</div><div class="code_line">&nbsp;&nbsp; &nbsp;long double &nbsp;timeinterval;</div><div class="code_line">&nbsp;&nbsp; &nbsp;long double &nbsp;myu;</div><div class="code_line">&nbsp;&nbsp; &nbsp;long double &nbsp;Hpi;</div><div class="code_line">&nbsp;&nbsp; &nbsp;bool &nbsp;isFalled;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyListCtrl3 *pMyList;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyStatic *pStatic12;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyStatic2 *pStatic9;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyStatic *pStatic13;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyStatic2 *pStatic10;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyStatic3 *pStatic11;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyEdit *pEdit3;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyEdit *pEdit4;</div><div class="code_line">} MyStruct;</div><div class="code_line">&nbsp;</div><div class="code_line">class CCalcDialog : public CDialogEx</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;DECLARE_DYNAMIC(CCalcDialog)</div><div class="code_line">&nbsp;</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;CCalcDialog(CWnd* pParent = NULL); &nbsp; // стандартный конструктор</div><div class="code_line">&nbsp;&nbsp; &nbsp;virtual ~CCalcDialog();</div><div class="code_line">&nbsp;</div><div class="code_line">// Данные диалогового окна</div><div class="code_line">&nbsp;&nbsp; &nbsp;enum { IDD = IDD_CALCDIALOG };</div><div class="code_line">&nbsp;</div><div class="code_line">protected:</div><div class="code_line">&nbsp;&nbsp; &nbsp;virtual void DoDataExchange(CDataExchange* pDX); &nbsp; &nbsp;// поддержка DDX/DDV</div><div class="code_line">&nbsp;&nbsp; &nbsp;DECLARE_MESSAGE_MAP()</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;CEdit m_IDC_EDIT1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyListCtrl m_IDC_LIST1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyListCtrl &nbsp;m_IDC_LIST2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CComboBox m_IDC_COMBO1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CEdit m_IDC_EDIT2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyListCtrl3 &nbsp;m_IDC_LIST3;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyEdit m_IDC_EDIT3;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyEdit m_IDC_EDIT4;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CButton m_IDC_BUTTON2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CButton m_IDC_BUTTON3;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CButton m_IDC_BUTTON4;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CStatic m_IDC_STATIC1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyStatic2 m_IDC_STATIC9;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyStatic2 m_IDC_STATIC10;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CStatic m_IDC_STATIC2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CStatic m_IDC_STATIC4;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CStatic m_IDC_STATIC8;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CNUDialog *pNUDialog;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void &nbsp;setValues();</div><div class="code_line">&nbsp;&nbsp; &nbsp;afx_msg void OnBnClickedButton1();</div><div class="code_line">&nbsp;&nbsp; &nbsp;afx_msg void OnBnClickedButton3();</div><div class="code_line">&nbsp;&nbsp; &nbsp;afx_msg void OnBnClickedButton4();</div><div class="code_line">&nbsp;&nbsp; &nbsp;afx_msg void OnBnClickedButton2();</div><div class="code_line">&nbsp;&nbsp; &nbsp;afx_msg void OnTimer(UINT);</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyStatic m_IDC_STATIC12;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyStatic m_IDC_STATIC13;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyStatic3 m_IDC_STATIC11;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CComboBox m_IDC_COMBO2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyButton2 m_IDC_BUTTON1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;DWORD &nbsp;groupboxstyle;</div><div class="code_line">&nbsp;&nbsp; &nbsp;DWORD &nbsp;editstyle;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int &nbsp;calcflag;</div><div class="code_line">&nbsp;&nbsp; &nbsp;HANDLE &nbsp;hThread;</div><div class="code_line">&nbsp;&nbsp; &nbsp;unsigned int &nbsp;threadID;</div><div class="code_line">&nbsp;&nbsp; &nbsp;bool &nbsp;timerTest;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int &nbsp;timerCount;</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyStruct &nbsp;myStruct;</div><div class="code_line">&nbsp;&nbsp; &nbsp;bool &nbsp;isthreadfinished;</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">void CCalcDialog::OnBnClickedButton1()</div><div class="code_line">// если была нажата кнопка &quot;Рассчитать&quot;</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;// TODO: добавьте свой код обработчика уведомлений</div><div class="code_line">&nbsp;&nbsp; &nbsp;int &nbsp;n, length, coordsys, timescale, year, month, day, hour, minute, countline, tpiyear, tpimonth, tpiday, tpihour, tpiminute;</div><div class="code_line">&nbsp;&nbsp; &nbsp;long &nbsp;jt, jt0, jt2, countline2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;long double &nbsp;x, y, z, vx, vy, vz, Sb, kappa, second, partDay, tj, tj0, tj2, timeinterval, step, curtime, myu, a, e, ild, Omega, w, M0, tpisecond, p, rpi, ralpha, u0,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lambda0, teta0, T, h, Hpi, Halpha, step2, deltat, difftime;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CString &nbsp;myString;</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCTSTR &nbsp;pzText;</div><div class="code_line">&nbsp;&nbsp; &nbsp;wchar_t &nbsp;wsyear[5], wsmonth[3], wsday[3], wshour[3], wsminute[3], wssecond[15], ws[80], ws2[80], Buffer[MAX_PATH*4];</div><div class="code_line">&nbsp;&nbsp; &nbsp;T3DVector &nbsp;rv[2];</div><div class="code_line">&nbsp;&nbsp; &nbsp;NewSatInit &nbsp;nst;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int sat;</div><div class="code_line">&nbsp;&nbsp; &nbsp;bool &nbsp;isFalled;</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyStruct &nbsp;myStruct;</div><div class="code_line">&nbsp;&nbsp; &nbsp;//MSG &nbsp;msg;</div><div class="code_line">&nbsp;&nbsp; &nbsp;//gta beg</div><div class="code_line">&nbsp;&nbsp; NU_SO nu; &nbsp; &nbsp; &nbsp; &nbsp; // НУ</div><div class="code_line">&nbsp;&nbsp; BX_co faf; &nbsp; &nbsp; &nbsp; &nbsp;// Модель сил</div><div class="code_line">&nbsp;&nbsp; LDouble per;</div><div class="code_line">//gta end</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// ...</div><div class="code_line">&nbsp;&nbsp; &nbsp;sat = &nbsp;CreateSatellite(&amp;nu, &amp;faf);</div><div class="code_line">//gta end</div><div class="code_line">&nbsp;&nbsp; &nbsp;myStruct.sat = sat;</div><div class="code_line">&nbsp;&nbsp; &nbsp;myStruct.jt0 = jt0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;myStruct.tj0 = tj0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;myStruct.step = step;</div><div class="code_line">&nbsp;&nbsp; &nbsp;myStruct.timeinterval = timeinterval;</div><div class="code_line">&nbsp;&nbsp; &nbsp;myStruct.myu = myu;</div><div class="code_line">&nbsp;&nbsp; &nbsp;myStruct.Hpi = Hpi;</div><div class="code_line">&nbsp;&nbsp; &nbsp;myStruct.isFalled = isFalled = false;</div><div class="code_line">&nbsp;&nbsp; &nbsp;myStruct.pMyList = &m_IDC_LIST3;</div><div class="code_line">&nbsp;&nbsp; &nbsp;myStruct.pStatic12 = &m_IDC_STATIC12;</div><div class="code_line">&nbsp;&nbsp; &nbsp;myStruct.pStatic9 = &m_IDC_STATIC9;</div><div class="code_line">&nbsp;&nbsp; &nbsp;myStruct.pStatic13 = &m_IDC_STATIC13;</div><div class="code_line">&nbsp;&nbsp; &nbsp;myStruct.pStatic10 = &m_IDC_STATIC10;</div><div class="code_line">&nbsp;&nbsp; &nbsp;myStruct.pStatic11 = &m_IDC_STATIC11;</div><div class="code_line">&nbsp;&nbsp; &nbsp;myStruct.pEdit3 = &m_IDC_EDIT3;</div><div class="code_line">&nbsp;&nbsp; &nbsp;myStruct.pEdit4 = &m_IDC_EDIT4;</div><div class="code_line">&nbsp;&nbsp; &nbsp;myStruct.threadflag = 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;myStruct.isthreadfinished = false;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (!timerTest)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;timerTest = true;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;SetTimer(ID_TIMER_1,500,NULL);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;hThread = (HANDLE)_beginthreadex(NULL,0,&amp;MyThreadFunc,&amp;myStruct,0,&amp;threadID);</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">unsigned int __stdcall &nbsp;MyThreadFunc(void *pParam)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;int &nbsp;countline, year, month, day, hour, minute, sat, tpiyear, tpimonth, tpiday, tpihour, tpiminute;</div><div class="code_line">&nbsp;&nbsp; &nbsp;long &nbsp;jt, jt0, jt2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;long double &nbsp;tj, tj0, tj2, curtime, second, partDay, difftime, T, Hpi, Halpha, ild, Omega, w, step, timeinterval, myu, a, e, M0, tpisecond, p, rpi, ralpha, u0, lambda0, teta0, h;</div><div class="code_line">&nbsp;&nbsp; &nbsp;bool &nbsp;isFalled;</div><div class="code_line">&nbsp;&nbsp; &nbsp;wchar_t &nbsp;ws[40];</div><div class="code_line">&nbsp;&nbsp; &nbsp;T3DVector &nbsp;rv[2];</div><div class="code_line">&nbsp;&nbsp; &nbsp;DWORD &nbsp;dwWaitResult;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyListCtrl3 *pMyList;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyStatic *pStatic12;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyStatic2 *pStatic9;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyStatic &nbsp;*pStatic13;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyStatic2 *pStatic10;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyStatic3 *pStatic11;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyEdit *pEdit3;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMyEdit *pEdit4;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyStruct *pMyStruct = (MyStruct*)pParam;</div><div class="code_line">&nbsp;&nbsp; &nbsp;volatile int *threadflag = &amp;(pMyStruct-&#62;threadflag);</div><div class="code_line">&nbsp;&nbsp; &nbsp;dwWaitResult = 100;</div><div class="code_line">&nbsp;&nbsp; &nbsp;sat = pMyStruct-&#62;sat;</div><div class="code_line">&nbsp;&nbsp; &nbsp;jt0 = pMyStruct-&#62;jt0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;tj0 = pMyStruct-&#62;tj0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;step = pMyStruct-&#62;step;</div><div class="code_line">&nbsp;&nbsp; &nbsp;timeinterval = pMyStruct-&#62;timeinterval;</div><div class="code_line">&nbsp;&nbsp; &nbsp;myu = pMyStruct-&#62;myu;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Hpi = pMyStruct-&#62;Hpi;</div><div class="code_line">&nbsp;&nbsp; &nbsp;pMyList = pMyStruct-&#62;pMyList;</div><div class="code_line">&nbsp;&nbsp; &nbsp;pStatic12 = pMyStruct-&#62;pStatic12;</div><div class="code_line">&nbsp;&nbsp; &nbsp;pStatic9 = pMyStruct-&#62;pStatic9;</div><div class="code_line">&nbsp;&nbsp; &nbsp;pStatic13 = pMyStruct-&#62;pStatic13;</div><div class="code_line">&nbsp;&nbsp; &nbsp;pStatic10 = pMyStruct-&#62;pStatic10;</div><div class="code_line">&nbsp;&nbsp; &nbsp;pStatic11 = pMyStruct-&#62;pStatic11;</div><div class="code_line">&nbsp;&nbsp; &nbsp;pEdit3 = pMyStruct-&#62;pEdit3;</div><div class="code_line">&nbsp;&nbsp; &nbsp;pEdit4 = pMyStruct-&#62;pEdit4;</div><div class="code_line">&nbsp;&nbsp; &nbsp;bool *pisthreadfinished = &amp;(pMyStruct-&#62;isthreadfinished);</div><div class="code_line">&nbsp;&nbsp; &nbsp;MyInnerThreadFunc(sat,jt0,tj0,step,timeinterval,myu,Hpi,pMyList,pStatic12,pStatic9,pStatic13,pStatic10,pStatic11,pEdit3,pEdit4,threadflag);</div><div class="code_line">&nbsp;&nbsp; &nbsp;*pisthreadfinished = true;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return 0;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void &nbsp;MyInnerThreadFunc(int sat, long jt0, long double tj0, long double step, long double timeinterval, long double myu, long double Hpi, CMyListCtrl3 *pMyList, CMyStatic *pStatic12, </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMyStatic2 *pStatic9, CMyStatic *pStatic13, CMyStatic2 *pStatic10, CMyStatic3 *pStatic11, CMyEdit *pEdit3, CMyEdit *pEdit4, volatile int *threadflag)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;int &nbsp;countline, year, month, day, hour, minute, tpiyear, tpimonth, tpiday, tpihour, tpiminute;</div><div class="code_line">&nbsp;&nbsp; &nbsp;long &nbsp;jt, jt2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;long double &nbsp;tj, tj2, curtime, second, partDay, difftime, T, Halpha, ild, Omega, w, a, e, M0, tpisecond, p, rpi, ralpha, u0, lambda0, teta0, h;</div><div class="code_line">&nbsp;&nbsp; &nbsp;bool &nbsp;isFalled;</div><div class="code_line">&nbsp;&nbsp; &nbsp;wchar_t &nbsp;ws[40];</div><div class="code_line">&nbsp;&nbsp; &nbsp;T3DVector &nbsp;rv[2];</div><div class="code_line">&nbsp;&nbsp; &nbsp;DWORD &nbsp;dwWaitResult;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;jt = jt0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;tj = tj0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;countline = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;do</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (*threadflag==0)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// если была послана команда выйти из вычислений</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// очистка памяти, если нужно;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (*threadflag==2)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// если была послана команда приостановить вычисления</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// выдача значений в ControlPointDialog;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;while (dwWaitResult!=WAIT_OBJECT_0)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dwWaitResult = WaitForSingleObject(myevent,1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (*threadflag==0)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// очистка памяти, если необходимо;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dwWaitResult = 100;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;} </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if(Hpi &#62; 1500)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Progn_Step_interface_1500(sat, jt, tj, step, rv, &amp;jt2, &amp;tj2);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Progn_Step_interface(sat, jt, tj, step, rv, &amp;jt2, &amp;tj2);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;curtime = jt2 + tj2;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;jt2 = (long)curtime;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;tj2 = curtime - (long double)jt2;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if ((curtime-jt-tj)&#60;step) &nbsp;isFalled = true;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;JD(jt2,tj2,&amp;year,&amp;month,&amp;day,&amp;partDay);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;partDay *= 86400.0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;hour = (int)(partDay / 3600.0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;partDay -= hour * 3600.0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;minute = (int)(partDay / 60.0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;second = partDay - minute * 60.0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;vecttoelem2full(rv[0].x,rv[0].y,rv[0].z,rv[1].x,rv[1].y,rv[1].z,year,month,day,hour,minute,second,myu,1,a,e,ild,w,Omega,M0,tpiyear,tpimonth,tpiday,tpihour,tpiminute,tpisecond,p,rpi,ralpha,u0,lambda0,teta0,T,h); </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (*threadflag==0)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// если была послана команда выйти из вычислений</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// очистка памяти, если нужно;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (*threadflag==2)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// если была послана команда приостановить вычисления</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// выдача значений в ControlPointDialog;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;while (dwWaitResult!=WAIT_OBJECT_0)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dwWaitResult = WaitForSingleObject(myevent,1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (*threadflag==0)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// очистка памяти, если необходимо;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dwWaitResult = 100;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;} </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (countline&#62;=12) &nbsp;pMyList-&#62;InsertItem(countline,L&quot;&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (isFalled==false)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;swprintf(ws,39,L&quot;%.4f&quot;,(countline+1)*step/365.25);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;difftime = (countline*step+curtime-jt-tj)/365.25;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;swprintf(ws,39,L&quot;%.4f&quot;,(countline*step+curtime-jt-tj)/365.25);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pMyList-&#62;SetItemText(countline,0,ws); // dt полета (годы)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;swprintf(ws,39,L&quot;%d.%02d.%02d/%02d:%02d:%06.3f&quot;,year,month,day,hour,minute,second);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pMyList-&#62;SetItemText(countline,1,ws); // дата</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;T *= 24.0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;swprintf(ws,39,L&quot;%f&quot;,T);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pMyList-&#62;SetItemText(countline,2,ws); // период T</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Hpi = rpi - REarth/AE;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Hpi = Hpi * AE;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;swprintf(ws,39,L&quot;%f&quot;,Hpi);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pMyList-&#62;SetItemText(countline,3,ws); // Hpi</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Halpha = ralpha - REarth/AE;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Halpha = Halpha * AE;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;swprintf(ws,39,L&quot;%f&quot;,Halpha);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pMyList-&#62;SetItemText(countline,4,ws); // Halpha</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;swprintf(ws,39,L&quot;%f&quot;,ild/PI*180.0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pMyList-&#62;SetItemText(countline,5,ws); // наклонение i</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;swprintf(ws,39,L&quot;%f&quot;,Omega/PI*180.0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pMyList-&#62;SetItemText(countline,6,ws); // долгота восходящего узла Omega</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;swprintf(ws,39,L&quot;%f&quot;,w/PI*180.0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pMyList-&#62;SetItemText(countline,7,ws); // аргумент перицентра w </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pMyList-&#62;RedrawWindow();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;countline++;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;int &nbsp;nCount = pMyList-&#62;GetItemCount();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (nCount&#62;0) &nbsp;pMyList-&#62;EnsureVisible(nCount-1,FALSE);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pMyList-&#62;RedrawWindow();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (*threadflag==0) // здесь значение *threadflag становится равным 0</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// если была послана команда выйти из вычислений</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// очистка памяти, если нужно;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return; // и здесь происходит выход из функции</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (*threadflag==2)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// если была послана команда приостановить вычисления</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// выдача значений в ControlPointDialog;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;while (dwWaitResult!=WAIT_OBJECT_0)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dwWaitResult = WaitForSingleObject(myevent,1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (*threadflag==0)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// очистка памяти, если необходимо;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dwWaitResult = 100;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;jt = jt2;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;tj = tj2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;} while ((jt+tj)&#60;=(jt0+tj0+timeinterval-step) &amp;&amp; Hpi &#62; 80);</div><div class="code_line">&nbsp;&nbsp; &nbsp;pMyList-&#62;lastLine = countline - 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (isFalled==false)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;AfxMessageBox(L&quot;Расчёт на заданный интервал времени завершён.&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pStatic12-&#62;paintstyle = 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pStatic12-&#62;RedrawWindow();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pStatic9-&#62;RedrawWindow();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pStatic13-&#62;paintstyle = 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pStatic13-&#62;RedrawWindow();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pStatic10-&#62;RedrawWindow();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pStatic11-&#62;RedrawWindow();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;swprintf(ws,40,L&quot; %d.%02d.%02d/%02d:%02d:%06.3f ET&quot;,year,month,day,hour,minute,second);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pEdit3-&#62;paintstyle = 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pEdit3-&#62;RedrawWindow();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pEdit3-&#62;SetWindowText(ws); // дата схода с орбиты</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;swprintf(ws,40,L&quot; %.6f&quot;,difftime);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pEdit4-&#62;paintstyle = 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pEdit4-&#62;RedrawWindow();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pEdit4-&#62;SetWindowText(ws); // время баллистического существования КО</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pStatic9-&#62;paintstyle = 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pStatic9-&#62;RedrawWindow();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pStatic10-&#62;paintstyle = 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pStatic10-&#62;RedrawWindow();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pStatic11-&#62;paintstyle = 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pStatic11-&#62;RedrawWindow();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pMyList-&#62;paintstyle = 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pMyList-&#62;RedrawWindow();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;AfxMessageBox(L&quot;Расчёт параметров схода КО с орбиты\nи времени его баллистического существования завершён&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;} </div><div class="code_line">}</div></ol></div></div></div></div>]]></description>
        <author>erslgoeirjh</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      </channel>
      </rss>
	