<?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=421488&amp;view=findpost&amp;p=3848140</guid>
        <pubDate>Mon, 14 Jun 2021 03:25:25 +0000</pubDate>
        <title>MVS: помогите найти место вывода переменной</title>
        <link>https://forum.sources.ru/index.php?showtopic=421488&amp;view=findpost&amp;p=3848140</link>
        <description><![CDATA[Berbraer: <strong class='tag-b'>ЫукпШ</strong>, слухай, ну я не настолько тупенький чтобы не разобраться как искать по проекту в студии :) Просто сишные передачи указателей немного ломают мозг с непривычки + непонимание, какая функция стандартная и известно что делает, какая - самописная автором. <br>
Но не суть, нашёл.<br>
Окончательное вычисление/форматирование результата происходит в функции <br>
void CDiskMarkDlg::SetMeter(CStaticFx* control, double score, double latency, int blockSize, int unit)<br>
И выводятся в m_TestRead через void CDiskMarkDlg::UpdateScore()<br>
<br>
Соответственно, в SetMeter можно перехватывать doble результаты. <br>
<br>
Вдруг кому пригодится.<br>
<br>
<strong class='tag-b'>Qraizer</strong>, я же написал - достать бинарную переменную, а далее передать ея в интернет. Сделал через запись результатов в файл. Из своего клиента я отслеживаю изменение файла, и новую запись странслирую на сайт. Т.к. тест даже самого быстрого диска занимает минуту минимум, такой способ обмена вполне приемлем. И универсален.]]></description>
        <author>Berbraer</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421488&amp;view=findpost&amp;p=3847989</guid>
        <pubDate>Tue, 08 Jun 2021 18:00:32 +0000</pubDate>
        <title>MVS: помогите найти место вывода переменной</title>
        <link>https://forum.sources.ru/index.php?showtopic=421488&amp;view=findpost&amp;p=3847989</link>
        <description><![CDATA[Qraizer: <strong class='tag-b'>Berbraer</strong>, почему бы тебе просто не сказать, какого результата ото всех своих усилий тебе хочется достичь?]]></description>
        <author>Qraizer</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421488&amp;view=findpost&amp;p=3847981</guid>
        <pubDate>Tue, 08 Jun 2021 11:28:39 +0000</pubDate>
        <title>MVS: помогите найти место вывода переменной</title>
        <link>https://forum.sources.ru/index.php?showtopic=421488&amp;view=findpost&amp;p=3847981</link>
        <description><![CDATA[ЫукпШ: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421488&view=findpost&p=3847972'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Berbraer &#064; <time class="tag-quote__quoted-time" datetime="2021-06-07T22:20:34+00:00">07.06.21, 22:20</time></span><div class='quote '>Ок, поищу форматы. Но m_TestWrite и иже там не встречается точно.</div></div><br>
Берем TotalCommander.<br>
Начинаем поиск в директории с zip-ом исходников.<br>
Указываем &quot;все файлы&quot;, &quot;ищем в архивах&quot;,<br>
строка &quot;m_TestWrite&quot;.<br>
Обнаруживаем её тут:<br>
<img class='tag-img' src='https://i.ibb.co/DfdJ2TN/crys.jpg' alt='user posted image'><br>
Смотрим файлы, и видим, что m_TestWrite - это объекты-статики:<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">&nbsp;&nbsp; &nbsp;CStaticFx m_TestWrite0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CStaticFx m_TestWrite1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CStaticFx m_TestWrite2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CStaticFx m_TestWrite3;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
T.е., по всей вероятности, это &quot;станция конечная&quot; для всех переменных.<br>
Значение как-то добывается, считается. Далее преобразуется в строку,<br>
а потом для отображения выводится в статик.<br>
Переменную надо нежно брать за хобот в момент перед преобразованием<br>
в строку. Именно в этой точке имеется готовое к выводу число.]]></description>
        <author>ЫукпШ</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421488&amp;view=findpost&amp;p=3847972</guid>
        <pubDate>Mon, 07 Jun 2021 22:20:34 +0000</pubDate>
        <title>MVS: помогите найти место вывода переменной</title>
        <link>https://forum.sources.ru/index.php?showtopic=421488&amp;view=findpost&amp;p=3847972</link>
        <description><![CDATA[Berbraer: Ок, поищу форматы. Но m_TestWrite и иже там не встречается точно. Придётся идти шагами...<br>Но в строке DDX_Control(pDX, IDC_TEST_READ_0, m_TestRead0); переменная m_TestRead0 - строковая? <br>А можно её из строки прям тут взад в бинарную преобразовать? <br>Ну, кроме ручного метода вычитания 0x30 из символов, домножения на степень 10 и сложения  :D]]></description>
        <author>Berbraer</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421488&amp;view=findpost&amp;p=3847970</guid>
        <pubDate>Mon, 07 Jun 2021 20:37:28 +0000</pubDate>
        <title>MVS: помогите найти место вывода переменной</title>
        <link>https://forum.sources.ru/index.php?showtopic=421488&amp;view=findpost&amp;p=3847970</link>
        <description><![CDATA[ЫукпШ: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421488&view=findpost&p=3847962'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Berbraer &#064; <time class="tag-quote__quoted-time" datetime="2021-06-07T16:16:27+00:00">07.06.21, 16:16</time></span><div class='quote '>Но как достать переменные, содержащие значения выводимые на экран, не могу разобраться, памагити&#33;  :wall:</div></div><br>
Надо исследовать подсудимую программу.<br>
я делаю так:<br>
1. Скачаем программу DebugView с сайта Микрософт:<br>
<a class='tag-url' href='https://docs.microsoft.com/en-us/sysinternals/downloads/debugview' target='_blank'>DebugView</a><br>
2. Запустим прогу, увидим окошко.<br>
3. Добавим модуль с таким текстом в твою программу (или спрячем модуль в библиотеку):<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 Type_Debug_String(const TCHAR* pFmt,...)</div><div class="code_line">{</div><div class="code_line">&nbsp;if(!pFmt) return;</div><div class="code_line">&nbsp;va_list ap; &nbsp; &nbsp; &nbsp; &nbsp;//Указатель на список параметров</div><div class="code_line">&nbsp;va_start(ap,pFmt); //Настроились на список параметров</div><div class="code_line">&nbsp;TCHAR sss[32768]; </div><div class="code_line">&nbsp;_vsntprintf_s(sss,ARRAYSIZE(sss),_TRUNCATE,pFmt,ap);</div><div class="code_line">&nbsp;::OutputDebugString(sss);</div><div class="code_line">&nbsp;va_end(ap); //Завершаем работу с макрокомандами </div><div class="code_line">}</div></ol></div></div></div></div><br>
4. Если в исходниках исследуемой программы захочется подсмотреть,<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">// если i - это int i, d - это double d</div><div class="code_line">&nbsp;Type_Debug_String(_T(&quot;i=%d i=0x%X d=%e&quot;),i,i,d);</div></ol></div></div></div></div><br>
В окошке DebugView увидим выводимые строчки.<br>
итп итд<br>
-----<br>
Что касается всего исследования - у тебя есть подсказка.<br>
Объекты-строки содержат операцию &quot;Format&quot;.<br>
Именно посредством этой операции, возможно, численные значения преобразуются<br>
в строку для последующего вывода в контрол.<br>
Значит, надо искать среди этих объектов-строк - <br>
какой из них содержит интересующую переменную.<br>
Добравшись до этого объекта можно искать дальше всю логику и историю<br>
вычислений/изменений/преобразований конкретной переменной.]]></description>
        <author>ЫукпШ</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421488&amp;view=findpost&amp;p=3847962</guid>
        <pubDate>Mon, 07 Jun 2021 16:16:27 +0000</pubDate>
        <title>MVS: помогите найти место вывода переменной</title>
        <link>https://forum.sources.ru/index.php?showtopic=421488&amp;view=findpost&amp;p=3847962</link>
        <description><![CDATA[Berbraer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421488&view=findpost&p=3847835'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2021-05-31T10:02:51+00:00">31.05.21, 10:02</time></span><div class='quote '></div></div><br>
Вернулся к задаче после небольшого перерыва, нашёл, что вывод происходит через DDX_Control, нашёл ID индикаторов и сам диалог:<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 CDiskMarkDlg::DoDataExchange(CDataExchange* pDX)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMainDialogFx::DoDataExchange(pDX);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_BUTTON_ALL, m_ButtonAll);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_BUTTON_TEST_0, m_ButtonTest0);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_BUTTON_TEST_1, m_ButtonTest1);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_BUTTON_TEST_2, m_ButtonTest2);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_BUTTON_TEST_3, m_ButtonTest3);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;//вот тут</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_TEST_READ_0, m_TestRead0);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_TEST_READ_1, m_TestRead1);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_TEST_READ_2, m_TestRead2);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_TEST_READ_3, m_TestRead3);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_TEST_WRITE_0, m_TestWrite0);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_TEST_WRITE_1, m_TestWrite1);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_TEST_WRITE_2, m_TestWrite2);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_TEST_WRITE_3, m_TestWrite3);</div><div class="code_line">&nbsp;</div><div class="code_line">#ifdef MIX_MODE</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_TEST_MIX_0, m_TestMix0);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_TEST_MIX_1, m_TestMix1);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_TEST_MIX_2, m_TestMix2);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_TEST_MIX_3, m_TestMix3);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_COMBO_MIX, m_ComboMix);</div><div class="code_line">#endif</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_COMMENT, m_Comment);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_COMBO_COUNT, m_ComboCount);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_COMBO_SIZE, m_ComboSize);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_COMBO_DRIVE, m_ComboDrive);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_COMBO_UNIT, m_ComboUnit);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_DEMO_SETTING, m_DemoSetting);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_READ_UNIT, m_ReadUnit);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_WRITE_UNIT, m_WriteUnit);</div><div class="code_line">&nbsp;</div><div class="code_line">#ifdef MIX_MODE</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_MIX_UNIT, m_MixUnit);</div><div class="code_line">#endif</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Text(pDX, IDC_COMBO_COUNT, m_ValueTestCount);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Text(pDX, IDC_COMBO_SIZE, m_ValueTestSize);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Text(pDX, IDC_COMBO_DRIVE, m_ValueTestDrive);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Text(pDX, IDC_COMBO_UNIT, m_ValueTestUnit);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_CBIndex(pDX, IDC_COMBO_COUNT, m_IndexTestCount);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_CBIndex(pDX, IDC_COMBO_SIZE, m_IndexTestSize);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_CBIndex(pDX, IDC_COMBO_DRIVE, m_IndexTestDrive);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_CBIndex(pDX, IDC_COMBO_UNIT, m_IndexTestUnit);</div><div class="code_line">#ifdef MIX_MODE</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_CBIndex(pDX, IDC_COMBO_MIX, m_IndexTestMix);</div><div class="code_line">#endif</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
С утра пытаюсь достать значение m_TestRead. Тестирую на флешке, параметры которой известны. Пытаюсь просто умножить m_TestRead на 2-100, чтобы увидеть изменение цифры на экране ну и понять, что я добрался до непосредственно значения, а не указателя и т.п. <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">DDX_Control(pDX, IDC_TEST_READ_0, (m_TestRead0*100));</div><div class="code_line">&nbsp;</div><div class="code_line">1&#62;F:\!!CrystalDiskMark8_0_2Src\CrystalDiskMark\DiskMarkDlg.cpp(193,50): error C2678: бинарный &quot;*&quot;: не найден оператор, принимающий левый операнд типа &quot;CStaticFx&quot; (или приемлемое преобразование отсутствует)</div><div class="code_line">1&#62;C:\Program Files (x86)\Windows Kits\Include.0.19041.0\um\d2d1helper.h(1003,1): message : может быть &quot;D2D1_MATRIX_3X2_F operator *(const D2D1_MATRIX_3X2_F &amp;,const D2D1_MATRIX_3X2_F &amp;)&quot; (компилируется исходный файл DiskMarkDlg.cpp)</div><div class="code_line">1&#62;F:\!!CrystalDiskMark8_0_2Src\CrystalDiskMark\DiskMarkDlg.cpp(193,50): message : при попытке сопоставить список аргументов &quot;(CStaticFx, int)&quot;</div><div class="code_line">1&#62;F:\!!CrystalDiskMark8_0_2Src\CrystalDiskMark\DiskMarkDlg.cpp(193,51): error C2660: DDX_Control: функция не принимает 2 аргументов</div><div class="code_line">1&#62;C:\Program Files (x86)\Microsoft Visual Studio19\Community\VC\Tools\MSVC.28.29910\atlmfc\include\afxdd_.h(71,13): message : см. объявление &quot;DDX_Control&quot; (компилируется исходный файл DiskMarkDlg.cpp)</div><div class="code_line">1&#62;Сборка проекта &quot;DiskMark.vcxproj&quot; завершена с ошибкой.</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">-------------------</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">m_TestRead0 *= 10;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">1&#62;F:\!!CrystalDiskMark8_0_2Src\CrystalDiskMark\DiskMarkDlg.cpp(192,14): error C2676: бинарный &quot;*=&quot;: &quot;CStaticFx&quot; не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору</div><div class="code_line">1&#62;Сборка проекта &quot;DiskMark.vcxproj&quot; завершена с ошибкой.</div></ol></div></div></div></div><br>
<br>
Раскурил код, насколько позволяют мои два с половиной познания Си. m_TestRead определена классом CStaticFx, этот класс написан автором кода. Но в DDX_Control она передаётся в стандартный класс CWnd, причём, через указатель, насколько понимаю значение символа &amp;.<br>
В итоге, совершенно не понятно, появляется ли тут непосредственно результат вычисления скорости диска, или это некая смычка между классами и всё?... <br>
Я в глубокой растерянности. Как записать значение в лог представляю, собственно, у автора лог ведётся стандартным спринтф емнип. Но как достать переменные, содержащие значения выводимые на экран, не могу разобраться, памагити&#33;  :wall: <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">&nbsp;&nbsp; &nbsp;CStaticFx m_TestRead0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CStaticFx m_TestRead1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CStaticFx m_TestRead2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CStaticFx m_TestRead3;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CStaticFx m_TestWrite0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CStaticFx m_TestWrite1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CStaticFx m_TestWrite2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CStaticFx m_TestWrite3;</div><div class="code_line">&nbsp;</div><div class="code_line">//-----------------------------------------------------------------------------</div><div class="code_line">&nbsp;</div><div class="code_line">void AFXAPI DDX_Control(CDataExchange* pDX, int nIDC, CWnd&amp; rControl);</div><div class="code_line">&nbsp;</div><div class="code_line">//-----------------------------------------------------------------------------</div><div class="code_line">&nbsp;</div><div class="code_line">void CDiskMarkDlg::DoDataExchange(CDataExchange* pDX)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMainDialogFx::DoDataExchange(pDX);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_BUTTON_ALL, m_ButtonAll);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_BUTTON_TEST_0, m_ButtonTest0);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_BUTTON_TEST_1, m_ButtonTest1);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_BUTTON_TEST_2, m_ButtonTest2);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_BUTTON_TEST_3, m_ButtonTest3);</div><div class="code_line">&nbsp;&nbsp; &nbsp;//m_TestRead0 *= 2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_TEST_READ_0, (m_TestRead0));</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_TEST_READ_1, m_TestRead1);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_TEST_READ_2, m_TestRead2);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_TEST_READ_3, m_TestRead3);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_TEST_WRITE_0, m_TestWrite0);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_TEST_WRITE_1, m_TestWrite1);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_TEST_WRITE_2, m_TestWrite2);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_TEST_WRITE_3, m_TestWrite3);</div><div class="code_line">&nbsp;</div><div class="code_line">#ifdef MIX_MODE</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_TEST_MIX_0, m_TestMix0);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_TEST_MIX_1, m_TestMix1);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_TEST_MIX_2, m_TestMix2);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_TEST_MIX_3, m_TestMix3);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_COMBO_MIX, m_ComboMix);</div><div class="code_line">#endif</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_COMMENT, m_Comment);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_COMBO_COUNT, m_ComboCount);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_COMBO_SIZE, m_ComboSize);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_COMBO_DRIVE, m_ComboDrive);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_COMBO_UNIT, m_ComboUnit);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_DEMO_SETTING, m_DemoSetting);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_READ_UNIT, m_ReadUnit);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_WRITE_UNIT, m_WriteUnit);</div><div class="code_line">&nbsp;</div><div class="code_line">#ifdef MIX_MODE</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Control(pDX, IDC_MIX_UNIT, m_MixUnit);</div><div class="code_line">#endif</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Text(pDX, IDC_COMBO_COUNT, m_ValueTestCount);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Text(pDX, IDC_COMBO_SIZE, m_ValueTestSize);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Text(pDX, IDC_COMBO_DRIVE, m_ValueTestDrive);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_Text(pDX, IDC_COMBO_UNIT, m_ValueTestUnit);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_CBIndex(pDX, IDC_COMBO_COUNT, m_IndexTestCount);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_CBIndex(pDX, IDC_COMBO_SIZE, m_IndexTestSize);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_CBIndex(pDX, IDC_COMBO_DRIVE, m_IndexTestDrive);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_CBIndex(pDX, IDC_COMBO_UNIT, m_IndexTestUnit);</div><div class="code_line">#ifdef MIX_MODE</div><div class="code_line">&nbsp;&nbsp; &nbsp;DDX_CBIndex(pDX, IDC_COMBO_MIX, m_IndexTestMix);</div><div class="code_line">#endif</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">//------------------------------------------------------------</div><div class="code_line">&nbsp;</div><div class="code_line">class CStaticFx : public CStatic</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;DECLARE_DYNAMIC(CStaticFx);</div><div class="code_line">&nbsp;</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Constructors</div><div class="code_line">&nbsp;&nbsp; &nbsp;CStaticFx();</div><div class="code_line">&nbsp;&nbsp; &nbsp;virtual ~CStaticFx();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Control</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL InitControl(int x, int y, int width, int height, double zoomRatio, CDC* bkDC,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;LPCWSTR imagePath, int imageCount, DWORD textAlign, int renderMode, BOOL bHighContrast, BOOL bDarkMode);</div><div class="code_line">&nbsp;&nbsp; &nbsp;void SetMargin(int top, int left, int bottom, int right, double zoomRatio);</div><div class="code_line">&nbsp;&nbsp; &nbsp;CSize GetSize(void);</div><div class="code_line">&nbsp;&nbsp; &nbsp;void SetDrawFrame(BOOL bDrawFrame);</div><div class="code_line">&nbsp;&nbsp; &nbsp;void SetDrawFrameEx(BOOL bDrawFrame, COLORREF frameColor = RGB(128, 128, 128));</div><div class="code_line">&nbsp;&nbsp; &nbsp;void SetGlassColor(COLORREF glassColor, BYTE glassAlpha);</div><div class="code_line">&nbsp;&nbsp; &nbsp;void SetMeter(BOOL bMeter, double meterRatio);</div><div class="code_line">&nbsp;&nbsp; &nbsp;void SetLabelUnit(CString label, CString unit);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Font</div><div class="code_line">&nbsp;&nbsp; &nbsp;void SetFontEx(CString face, int size, int sizeToolTip, double zoomRatio, double fontRatio = 1.0,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; COLORREF textColor = RGB(0, 0, 0), LONG fontWeight = FW_NORMAL, BYTE fontRender = CLEARTYPE_NATURAL_QUALITY);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// ToolTip</div><div class="code_line">&nbsp;&nbsp; &nbsp;void SetToolTipText(LPCTSTR pText);</div><div class="code_line">&nbsp;&nbsp; &nbsp;void SetToolTipActivate(BOOL bActivate = TRUE);</div><div class="code_line">&nbsp;&nbsp; &nbsp;void SetToolTipWindowText(LPCTSTR pText);</div><div class="code_line">&nbsp;&nbsp; &nbsp;CString GetToolTipText();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Mouse</div><div class="code_line">&nbsp;&nbsp; &nbsp;void SetHandCursor(BOOL bHandCuror = TRUE);</div><div class="code_line">&nbsp;</div><div class="code_line">protected:</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Draw Control</div><div class="code_line">&nbsp;&nbsp; &nbsp;virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);</div><div class="code_line">&nbsp;&nbsp; &nbsp;virtual void DrawControl(CDC* drawDC, LPDRAWITEMSTRUCT lpDrawItemStruct, CBitmap&amp; ctrlBitmap, CBitmap&amp; bkBitmap, int no);</div><div class="code_line">&nbsp;&nbsp; &nbsp;virtual void DrawString(CDC* drawDC, LPDRAWITEMSTRUCT lpDrawItemStruct);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Image</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL LoadBitmap(LPCTSTR fileName);</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL LoadBitmap(HBITMAP hBitmap);</div><div class="code_line">&nbsp;&nbsp; &nbsp;void SetBkReload(void);</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL SetBitmap(CBitmap&amp; bitmap);</div><div class="code_line">&nbsp;&nbsp; &nbsp;void LoadCtrlBk(CDC* drawDC);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// ToolTip</div><div class="code_line">&nbsp;&nbsp; &nbsp;void InitToolTip();</div><div class="code_line">&nbsp;&nbsp; &nbsp;virtual BOOL PreTranslateMessage(MSG* pMsg);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Message Map</div><div class="code_line">&nbsp;&nbsp; &nbsp;DECLARE_MESSAGE_MAP()</div><div class="code_line">&nbsp;&nbsp; &nbsp;afx_msg BOOL OnEraseBkgnd(CDC* pDC);</div><div class="code_line">&nbsp;&nbsp; &nbsp;afx_msg void OnMouseMove(UINT nFlags, CPoint point);</div><div class="code_line">&nbsp;&nbsp; &nbsp;afx_msg void OnMouseHover(UINT nFlags, CPoint point);</div><div class="code_line">&nbsp;&nbsp; &nbsp;afx_msg void OnMouseLeave();</div><div class="code_line">&nbsp;&nbsp; &nbsp;afx_msg void OnKillfocus();</div><div class="code_line">&nbsp;&nbsp; &nbsp;afx_msg void OnSetfocus();</div><div class="code_line">&nbsp;&nbsp; &nbsp;afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);</div><div class="code_line">&nbsp;</div><div class="code_line">protected:</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Control</div><div class="code_line">&nbsp;&nbsp; &nbsp;int m_X;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int m_Y;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CSize m_CtrlSize;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CRect m_Margin;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int m_RenderMode;</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL m_bHighContrast;</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL m_bDarkMode;</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL m_bDrawFrame;</div><div class="code_line">&nbsp;&nbsp; &nbsp;COLORREF m_FrameColor;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CString m_Label;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CString m_Unit;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Glass</div><div class="code_line">&nbsp;&nbsp; &nbsp;COLORREF m_GlassColor;</div><div class="code_line">&nbsp;&nbsp; &nbsp;BYTE m_GlassAlpha;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Meter</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL m_bMeter;</div><div class="code_line">&nbsp;&nbsp; &nbsp;double m_MeterRatio;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Image</div><div class="code_line">&nbsp;&nbsp; &nbsp;CString m_ImagePath;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int m_ImageCount;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CDC* m_BkDC;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CBitmap m_BkBitmap;</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL m_bBkBitmapInit;</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL m_bBkLoad;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CBitmap m_CtrlBitmap;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CImage m_CtrlImage;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Font</div><div class="code_line">&nbsp;&nbsp; &nbsp;DWORD m_TextAlign;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CFont m_Font;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CFont m_FontToolTip;</div><div class="code_line">&nbsp;&nbsp; &nbsp;COLORREF m_TextColor;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// ToolTip</div><div class="code_line">&nbsp;&nbsp; &nbsp;CToolTipCtrl m_ToolTip;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CString m_ToolTipText;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Mouse</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL m_bHover;</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL m_bFocas;</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL m_bTrackingNow;</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL m_bHandCursor;</div><div class="code_line">};</div></ol></div></div></div></div>]]></description>
        <author>Berbraer</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421488&amp;view=findpost&amp;p=3847842</guid>
        <pubDate>Mon, 31 May 2021 15:01:30 +0000</pubDate>
        <title>MVS: помогите найти место вывода переменной</title>
        <link>https://forum.sources.ru/index.php?showtopic=421488&amp;view=findpost&amp;p=3847842</link>
        <description><![CDATA[Berbraer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421488&view=findpost&p=3847830'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>ЫукпШ &#064; <time class="tag-quote__quoted-time" datetime="2021-05-31T09:05:41+00:00">31.05.21, 09:05</time></span><div class='quote '>Попробуй произвести поиск по всем исходникам строки &quot;sprintf&quot;.</div></div><br>
sprintf и т.п. в исходнике отсутствует (кроме пары мест записи в лог), его я первым делом искал, а других способов вывода данных на экран в си я не знаю. <br>
<br>
<br>
В коде где-то есть переменные, в которые в бинарной форме попадают результаты расчётов скорости диска и потом они уже как-то выводятся в гуй. Вот мне нужно эти переменные с готовыми результатами найти и данные забрать.<br>
Самое логичное, это найти место вывода в гуй и там найти эти переменные со значениями, чтобы перехватить для своих нужд. Вот эти самые места вывода данных на экран я и не смог найти.<br>
<br>
<strong class='tag-b'>Qraizer</strong>, за подсказку CString::Format() спасибо, попробую разобраться что это.]]></description>
        <author>Berbraer</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421488&amp;view=findpost&amp;p=3847835</guid>
        <pubDate>Mon, 31 May 2021 10:02:51 +0000</pubDate>
        <title>MVS: помогите найти место вывода переменной</title>
        <link>https://forum.sources.ru/index.php?showtopic=421488&amp;view=findpost&amp;p=3847835</link>
        <description><![CDATA[Qraizer: Код напичкан CString::Format()-ами. Походу именно так переменные и &quot;превращаются в циферки&quot;.]]></description>
        <author>Qraizer</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421488&amp;view=findpost&amp;p=3847830</guid>
        <pubDate>Mon, 31 May 2021 09:05:41 +0000</pubDate>
        <title>MVS: помогите найти место вывода переменной</title>
        <link>https://forum.sources.ru/index.php?showtopic=421488&amp;view=findpost&amp;p=3847830</link>
        <description><![CDATA[ЫукпШ: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421488&view=findpost&p=3847827'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Berbraer &#064; <time class="tag-quote__quoted-time" datetime="2021-05-31T01:30:10+00:00">31.05.21, 01:30</time></span><div class='quote '>Неожиданно для себя не могу найти место, где переменная из переменной превращается в циферку... После всех вычислений должно же быть место где некая переменная с результатом уходит в отображение.</div></div><br>
Попробуй произвести поиск по всем исходникам строки &quot;sprintf&quot;.]]></description>
        <author>ЫукпШ</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421488&amp;view=findpost&amp;p=3847827</guid>
        <pubDate>Mon, 31 May 2021 01:30:10 +0000</pubDate>
        <title>MVS: помогите найти место вывода переменной</title>
        <link>https://forum.sources.ru/index.php?showtopic=421488&amp;view=findpost&amp;p=3847827</link>
        <description><![CDATA[Berbraer: Привет всем&#33; <br>
Есть известная опенсурсная софтина CrystalDiskMark, исходник можно скачать с оф. сайта <a class='tag-url' href='https://crystalmark.info/redirect.php?product=CrystalDiskMarkSrc' target='_blank'>https://crystalmark.info/redirect.php?produ...stalDiskMarkSrc</a>  <br>
Написан в Microsoft Visual Studio без единого комментария. Пока добился того, что исходник у меня на машине компилируется и затем работает. <a class='tag-url' href='https://cloud.mail.ru/public/KG1n/6DVkZHDoB' target='_blank'>https://cloud.mail.ru/public/KG1n/6DVkZHDoB</a> <br>
Мне нужно забрать результаты теста и передать бекэнду сайта. <br>
Неожиданно для себя не могу найти место, где переменная из переменной превращается в циферку... После всех вычислений должно же быть место где некая переменная с результатом уходит в отображение.<br>
Опыт в с++ околонулевой, в универе пробовал с++ builder и там через форму можно было найти объект гуя и отследить связанные с ним переменные. Тут какого-то конструктора гуя не видно вообще, где переменные уходят в printf или что-то подобное тоже не понятно... <br>
Помогите плз их найти.]]></description>
        <author>Berbraer</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      </channel>
      </rss>
	