<?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=447635&amp;view=findpost&amp;p=3906743</guid>
        <pubDate>Fri, 05 Jul 2024 09:37:45 +0000</pubDate>
        <title>Сообщения Scrollbar</title>
        <link>https://forum.sources.ru/index.php?showtopic=447635&amp;view=findpost&amp;p=3906743</link>
        <description><![CDATA[ЫукпШ: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=447635&view=findpost&p=3906564'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>H g &#064; <time class="tag-quote__quoted-time" datetime="2024-07-02T12:27:57+00:00">02.07.24, 12:27</time></span><div class='quote '>Создаю окно в котором будут рисунки. В качестве контейнера для рисунков взял WC_STATIC, поскольку PictureBox как в VB6 <br>
<br>
Добавил полосы прокрутки. На форме отображаются. Но где выловить их сообщения в главную процедуру не приходят.<br>
Статик вообще передает сообщения от его скроллов ?</div></div><br>
Эти сообщения, вероятно, приходят в оконную процедуру<br>
самого статика.<br>
А ни как не главного окна.<br>
Должны быть сообщения WM_VSCROLL и WM_HSCROLL.<br>
Почитай у Петзольда, том 1, ~ стр. 56 и далее. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-07-05T12:41:39+03:00">05.07.24, 09:41</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=447635&view=findpost&p=3906637'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>H g &#064; <time class="tag-quote__quoted-time" datetime="2024-07-04T05:32:02+00:00">04.07.24, 05:32</time></span><div class='quote '>В общем, видится уже проще сделать скроллы как отдельные элементы управления, уж они то точно должны посылать сообщения</div></div><br>
Да, лично я так и делал.<br>
Только использовал &quot;обычное&quot; окно, а ни как не &quot;статик&quot;.<br>
Всё отлично работает, никаких посторонних видео-эффектов<br>
не наблюдается.]]></description>
        <author>ЫукпШ</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=447635&amp;view=findpost&amp;p=3906703</guid>
        <pubDate>Thu, 04 Jul 2024 17:55:18 +0000</pubDate>
        <title>Сообщения Scrollbar</title>
        <link>https://forum.sources.ru/index.php?showtopic=447635&amp;view=findpost&amp;p=3906703</link>
        <description><![CDATA[Qraizer: Ну, с SS_NOTIFY было ожидаемо. Хоть и жаль.<br>Я бы в итоге сделал, как и (наверное) ты: добавил справа и снизу скроллы отдельными элементами и SS_OWNERDRAWнутому статику по WM_PAINT из заранее загруженного битмапа BitBlt()шил с нужными смещениями.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=447635&amp;view=findpost&amp;p=3906682</guid>
        <pubDate>Thu, 04 Jul 2024 10:45:34 +0000</pubDate>
        <title>Сообщения Scrollbar</title>
        <link>https://forum.sources.ru/index.php?showtopic=447635&amp;view=findpost&amp;p=3906682</link>
        <description><![CDATA[H g: попробовал сделать scroll-ы отдельными элементами - выглядит очень не эстетично :-(<br>
... и к тому же с перерисовкой вопросы.<br>
н-да, придется что-то еще придумывать <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-07-04T11:20:50+00:00">04.07.24, 11:20</time></span></span><br>
Делаю следующее &quot;извращение&quot; будет кнопка WC_BUTTON со скроллами (от нее идут сообщения WM_HSCROLL и WM_VSCROLL) а поверх будет статик чуть меньше по размеру на ширину этих скроллов. В статике и будет все рисование, а смещение рисунка на статике будут регулировать скроллы от кнопки...<br>
Вот как тут будешь делать правильно, если приходится такой ерундой заниматься.]]></description>
        <author>H g</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=447635&amp;view=findpost&amp;p=3906637</guid>
        <pubDate>Thu, 04 Jul 2024 05:32:02 +0000</pubDate>
        <title>Сообщения Scrollbar</title>
        <link>https://forum.sources.ru/index.php?showtopic=447635&amp;view=findpost&amp;p=3906637</link>
        <description><![CDATA[H g: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=447635&view=findpost&p=3906612'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-07-03T12:43:09+00:00">03.07.24, 12:43</time></span><div class='quote '>SS_NOTIFY не поможет?</div></div><br>
Хорошо<br>
допустим добавил я этот стиль SS_NOTIFY, сообщение WM_HSCROLL все равно не проходит, а тогда какое сообщение ловить в главной процедуре ?<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 FormCreatePictureBox()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;DWORD dwstyle;</div><div class="code_line">&nbsp;&nbsp; &nbsp;dwstyle = WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | SS_WHITERECT | SS_NOTIFY;</div><div class="code_line">&nbsp;&nbsp; &nbsp;e::formhpicturebox = CreateWindowEx(WS_EX_CLIENTEDGE, WC_STATIC, NULL, dwstyle, 0, 0, 0, 0, e::formhwnd, 0, e::formhinst, NULL);</div><div class="code_line">&nbsp;&nbsp; &nbsp;//e::formhpicturebox = CreateWindowEx(WS_EX_CLIENTEDGE, e::formpictureclass, NULL, dwstyle, 0, 0, 0, 0, e::formhwnd, 0, e::formhinst, NULL);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;//e::formhpictureboxwndproc = (WNDPROC) SetWindowLong(e::formhpicturebox, GWL_WNDPROC, (LONG) WndProcSubclassing);</div><div class="code_line">&nbsp;&nbsp; &nbsp;//EnableScrollBar(e::formhpicturebox, SB_BOTH, ESB_DISABLE_BOTH);</div><div class="code_line">&nbsp;&nbsp; &nbsp;ShowWindow(e::formhpicturebox, SW_SHOW);</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;switch (message)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;// ...</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;case WM_HSCROLL:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MessageBox(e::formhwnd, &quot;WM_HSCROLL&quot;, &quot;Message&quot;, MB_OK);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;return DefWindowProc(hwnd, message, wparam, lparam);</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
Попробую сделать скроллы как отдельные элементы управления, уж они то точно должны посылать сообщения <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-07-04T06:14:08+00:00">04.07.24, 06:14</time></span></span><br>
обновлено:<br>
<br>
пытаюсь ловить <br>
    case WM_LBUTTONDOWN:<br>
        MessageBox(e::formhwnd, &quot;WM_LBUTTONDOWN&quot;, &quot;Message&quot;, MB_OK);<br>
        DataLButtonDown();<br>
        return 0;<br>
<br>
если нет стиля SS_NOTIFY мессажд появляется, если этот стиль установлен мессадж не появляется.<br>
В общем, видится уже проще сделать скроллы как отдельные элементы управления, уж они то точно должны посылать сообщения <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-07-04T06:24:31+00:00">04.07.24, 06:24</time></span></span><br>
На форуме что-то похожее было<br>
<a class='tag-url' href='https://forum.sources.ru/index.php?showtopic=36394' target='_blank'>Упрямый STATIC</a> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-07-04T06:25:26+00:00">04.07.24, 06:25</time></span></span><br>
22 года назад )))]]></description>
        <author>H g</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=447635&amp;view=findpost&amp;p=3906636</guid>
        <pubDate>Thu, 04 Jul 2024 05:13:38 +0000</pubDate>
        <title>Сообщения Scrollbar</title>
        <link>https://forum.sources.ru/index.php?showtopic=447635&amp;view=findpost&amp;p=3906636</link>
        <description><![CDATA[Qraizer: Я тоже читал, но попробовать минута времени. В MSDN иногда попадаются статьи с ошибками, лично две видел.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=447635&amp;view=findpost&amp;p=3906635</guid>
        <pubDate>Thu, 04 Jul 2024 04:29:36 +0000</pubDate>
        <title>Сообщения Scrollbar</title>
        <link>https://forum.sources.ru/index.php?showtopic=447635&amp;view=findpost&amp;p=3906635</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=447635&view=findpost&p=3906612'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-07-03T12:43:09+00:00">03.07.24, 12:43</time></span><div class='quote '>SS_NOTIFY не поможет?</div></div><br>
Почитал описалово, про сообщения о прокрутке там ничего на сказано. Только вот это:<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><strong class='tag-b'>SS_NOTIFY</strong><br>
Sends the parent window STN_CLICKED, STN_DBLCLK, STN_DISABLE, and STN_ENABLE notification codes when the user clicks or double-clicks the control.</div></div>]]></description>
        <author>Majestio</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=447635&amp;view=findpost&amp;p=3906612</guid>
        <pubDate>Wed, 03 Jul 2024 12:43:09 +0000</pubDate>
        <title>Сообщения Scrollbar</title>
        <link>https://forum.sources.ru/index.php?showtopic=447635&amp;view=findpost&amp;p=3906612</link>
        <description><![CDATA[Qraizer: SS_NOTIFY не поможет?]]></description>
        <author>Qraizer</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=447635&amp;view=findpost&amp;p=3906574</guid>
        <pubDate>Wed, 03 Jul 2024 00:49:38 +0000</pubDate>
        <title>Сообщения Scrollbar</title>
        <link>https://forum.sources.ru/index.php?showtopic=447635&amp;view=findpost&amp;p=3906574</link>
        <description><![CDATA[Majestio: Вот ответ от ChatGPT. Думаю нужно посмотреть и проверить:<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Статический элемент управления WC_STATIC не передает сообщения о прокрутке по умолчанию. Он предназначен для отображения статического текста или изображений и не имеет встроенной функциональности прокрутки.<br>
Если вам нужно иметь возможность прокручивать изображения внутри контейнера, вам может потребоваться использовать другой элемент управления, который поддерживает прокрутку, например, элемент управления ScrollBar или Panel.<br>
На C++ вы можете использовать элемент управления ScrollBar или элемент управления Panel с прокруткой для создания контейнера с рисунками. Вот пример кода на C++, который использует элемент управления ScrollBar:<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">#include &#60;windows.h&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">HWND formhpicturebox;</div><div class="code_line">HWND scrollbar;</div><div class="code_line">&nbsp;</div><div class="code_line">void CreatePictureBox(HWND hwnd)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Создание элемента управления ScrollBar</div><div class="code_line">&nbsp;&nbsp; &nbsp;scrollbar = CreateWindowEx(0, &quot;SCROLLBAR&quot;, NULL, WS_CHILD | WS_VISIBLE | SBS_VERT, 0, 0, 0, 0, hwnd, NULL, NULL, NULL);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Создание элемента управления WC_STATIC для отображения рисунков</div><div class="code_line">&nbsp;&nbsp; &nbsp;DWORD dwstyle = WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | SS_WHITERECT;</div><div class="code_line">&nbsp;&nbsp; &nbsp;formhpicturebox = CreateWindowEx(WS_EX_CLIENTEDGE, &quot;STATIC&quot;, NULL, dwstyle, 0, 0, 0, 0, hwnd, NULL, NULL, NULL);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Установка связи между ScrollBar и WC_STATIC</div><div class="code_line">&nbsp;&nbsp; &nbsp;SetScrollPos(scrollbar, SB_CTL, 0, TRUE);</div><div class="code_line">&nbsp;&nbsp; &nbsp;SetScrollRange(scrollbar, SB_CTL, 0, 100, TRUE);</div><div class="code_line">&nbsp;&nbsp; &nbsp;SetScrollInfo(scrollbar, SB_CTL, &amp;si, TRUE);</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;switch (msg)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;case WM_CREATE:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CreatePictureBox(hwnd);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;case WM_SIZE:</div><div class="code_line">&nbsp;&nbsp; &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;break;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;case WM_VSCROLL:</div><div class="code_line">&nbsp;&nbsp; &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;break;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;case WM_PAINT:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Отрисовка рисунков в элементе управления WC_STATIC</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// ...</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;case WM_DESTROY:</div><div class="code_line">&nbsp;&nbsp; &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;break;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;default:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return DefWindowProc(hwnd, msg, wParam, lParam);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;return 0;</div><div class="code_line">}</div></ol></div></div></div></div><br>
В этом примере мы создаем элемент управления ScrollBar с помощью функции CreateWindowEx и элемент управления WC_STATIC с помощью функции CreateWindowEx. Затем мы устанавливаем связь между ScrollBar и WC_STATIC с помощью функций SetScrollPos, SetScrollRange и SetScrollInfo. В функции WndProc мы обрабатываем сообщения о прокрутке (WM_VSCROLL) и отрисовываем рисунки в элементе управления WC_STATIC (WM_PAINT).<br>
</div></div>]]></description>
        <author>Majestio</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=447635&amp;view=findpost&amp;p=3906564</guid>
        <pubDate>Tue, 02 Jul 2024 12:27:57 +0000</pubDate>
        <title>Сообщения Scrollbar</title>
        <link>https://forum.sources.ru/index.php?showtopic=447635&amp;view=findpost&amp;p=3906564</link>
        <description><![CDATA[H g: Создаю окно в котором будут рисунки. В качестве контейнера для рисунков взял WC_STATIC, поскольку PictureBox как в VB6 нет<br><br>void FormCreatePictureBox()<br>{<br>    DWORD dwstyle;<br>    dwstyle = WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | SS_WHITERECT;<br>    e::formhpicturebox = CreateWindowEx(WS_EX_CLIENTEDGE, WC_STATIC, NULL, dwstyle, 0, 0, 0, 0, e::formhwnd, 0, e::formhinst, NULL);<br>    ShowWindow(e::formhpicturebox, SW_SHOW);<br>}<br><br>Добавил полосы прокрутки. На форме отображаются. Но где выловить их сообщения в главную процедуру не приходят.<br>Статик вообще передает сообщения от его скроллов ?]]></description>
        <author>H g</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      </channel>
      </rss>
	