<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Высота и ширина вкладок tab]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=9056</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9056&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Высота и ширина вкладок tab».]]></description>
		<lastBuildDate>Fri, 29 Apr 2016 07:16:16 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=103185#p103185</link>
			<description><![CDATA[<p>Наверно, просто у вас тут разговор вперемежку и о тех, и о других. Потом, иногда ведь нужно получить и Int из UInt тоже.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 29 Apr 2016 07:16:16 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=103185#p103185</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=103184#p103184</link>
			<description><![CDATA[<div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>Так сработает, только если число не выходит за границы Short:</p></blockquote></div><p>Не совсем понял. Если ты о моём коде, то он и предназначен для Short.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Fri, 29 Apr 2016 05:12:57 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=103184#p103184</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=103183#p103183</link>
			<description><![CDATA[<p>Так сработает, только если число не выходит за границы Short:<br /></p><div class="codebox"><pre><code>SetFormat, IntegerFast, H  ; для нагдядности
a := -0x8001   ; Int
MsgBox, % a &amp;= 0xFFFFFFFF   ; UInt
MsgBox, % a &lt;&lt; 48 &gt;&gt; 48

a := 0x8000   ; Int
MsgBox, % a &amp;= 0xFFFFFFFF   ; UInt
MsgBox, % a &lt;&lt; 48 &gt;&gt; 48</code></pre></div><p>Для 32-битных в общем случае так:<br /></p><div class="codebox"><pre><code>SetFormat, IntegerFast, H
a := -0x8001      ; Int
a &amp;= 0xFFFFFFFF   ; UInt
MsgBox, % a &gt; 0x7FFFFFFF ? -~a - 1 : a</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 29 Apr 2016 04:37:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=103183#p103183</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=102873#p102873</link>
			<description><![CDATA[<p>Тут надо разделять число и параметр. Числа в АНК 64-битные, а параметр будет 32-битный, т.к. верхние 32 бита АНК отрежет при передаче числа. Если параметр 8-битный, он отрежет всё, что выше 8 бит. Мой код оперирует с числом, а не с параметром.</p><p>Здесь отрицательное 16-битное число упаковано в младшие 16 бит 64-битного числа и надо, чтобы при распаковке получилось отрицательное 64-битное число с тем же значением. Простое &quot;&amp; 0xFFFF&quot; тут не годится, поскольку тогда все биты выше младших 16 будут нулями, а у отрицательного числа они должны быть все 1. Чтобы их заполнить единицами, и используются сдвиги. Сначала младшие 16 бит сдвигаются влево до упора (на 48 шагов), так чтобы старший бит 16-битного числа (1 у отрицательных) стал старшим битом 64-битного. Потом идёт сдвиг обратно вправо, и при этом освобождающиеся слева биты заполняются этим самым старшим битом. Это так называемый арифметический сдвиг, сохраняющий знак числа. Если бы 16-битное число было положительным, старший бит был бы 0 и освобождающиеся биты заполнились бы нулями. Конечно, для положительных чисел трюк со сдвигами не нужен, там достаточно &quot;&amp; 0xFFFF&quot;, но и вреда им от него не будет.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Sat, 23 Apr 2016 12:31:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=102873#p102873</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=102869#p102869</link>
			<description><![CDATA[<div class="quotebox"><cite>YMP пишет:</cite><blockquote><p>Ну, вообще-то тип WORD — это 16 бит.</p></blockquote></div><p>То есть в вашем примере параметр также остаётся 32 бит? Просто не понятно число 48.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sat, 23 Apr 2016 11:51:07 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=102869#p102869</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=102868#p102868</link>
			<description><![CDATA[<p>Ну, вообще-то тип WORD — это 16 бит. Поэтому сдвиг на 32 бита тут не к месту. А в примере с GetCursorPos половинки числа имеют по 32 бита. Функция вполне нормально распакует, ведь она знает, что ей должны передать. То, что АНК оперирует в сдвигах 64-битными числами, не значит, что он их и передаст. Если тип указан как int или uint, то он при вызове функциии обрежет число до 32 бит.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Sat, 23 Apr 2016 11:45:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=102868#p102868</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=102865#p102865</link>
			<description><![CDATA[<p>Есть такой пример работы GetCursorPos:<br /></p><div class="codebox"><pre><code>
DllCall(&quot;GetCursorPos&quot;, &quot;int64P&quot;, pt)
cwx := pt &lt;&lt; 32 &gt;&gt; 32
cwy := pt &gt;&gt; 32
</code></pre></div><p>может тогда:<br /></p><div class="codebox"><pre><code>LOWORD := -100
HIWORD := -200
Param := LOWORD &amp; 0xFFFFFFFF | HIWORD &lt;&lt; 32

MsgBox, % &quot;LOWORD = &quot; Param &lt;&lt; 32 &gt;&gt; 32
        . &quot;`nHIWORD = &quot; Param &gt;&gt; 32</code></pre></div><p>Вопрос в том как функция которой передаётся параметр &quot;распакует&quot; его, то есть в любом ли случае она правильно получит LOWORD и HIWORD из </p><div class="codebox"><pre><code>LOWORD &amp; 0xFFFFFFFF | HIWORD &lt;&lt; 32</code></pre></div><p>и из </p><div class="codebox"><pre><code>LOWORD | HIWORD &lt;&lt; 16</code></pre></div><p>?</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sat, 23 Apr 2016 11:20:15 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=102865#p102865</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=102858#p102858</link>
			<description><![CDATA[<p>Судя по всему, даже 32-битный АНК использует в таких операциях 64-битные числа. Поэтому приходится сдвигать на 48, чтобы правильно извлечь отрицательное 16-битное число из младших 16 бит. Вот этот вариант работает для любых сочетаний знаков.<br /></p><div class="codebox"><pre><code>
LOWORD := -100
HIWORD := -200
Param := LOWORD &amp; 0xFFFF | HIWORD &lt;&lt; 16

MsgBox, % &quot;LOWORD = &quot; Param &lt;&lt; 48 &gt;&gt; 48
        . &quot;`nHIWORD = &quot; Param &gt;&gt; 16
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Sat, 23 Apr 2016 05:27:58 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=102858#p102858</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=102821#p102821</link>
			<description><![CDATA[<div class="quotebox"><cite>YMP пишет:</cite><blockquote><div class="codebox"><pre><code>
TCM_SETITEMSIZE := 0x1329
lparam := width | hight &lt;&lt; 16
</code></pre></div></blockquote></div><p>А как &quot;упаковать&quot; отрицательные значения?<br /></p><div class="codebox"><pre><code>
LOWORD := -100
HIWORD := -200
Param := LOWORD | HIWORD &lt;&lt; 16

MsgBox, % &quot;LOWORD = &quot; Param &amp; 0xFFFF
        . &quot;`nHIWORD = &quot; Param &gt;&gt; 16 
 </code></pre></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Fri, 22 Apr 2016 14:49:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=102821#p102821</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=78426#p78426</link>
			<description><![CDATA[<div class="quotebox"><cite>Irbis пишет:</cite><blockquote><p>00000101b &lt;&lt; 2 = 00010100b</p></blockquote></div><p>Было двоичное (об этом говорит буква b на конце) число 00000101. Произвели сдвиг на два разряда влево, то есть нули и единицы сместились на две позиции влево, получилось двоичное число 00010100.</p><p>Если я понимаю, о чём речь. </p><p><span class="postimg"><img src="http://static.diary.ru/userdir/2/7/0/3/2703370/74660013.jpg" alt="http://static.diary.ru/userdir/2/7/0/3/2703370/74660013.jpg" /></span></p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Sun, 22 Dec 2013 18:38:01 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=78426#p78426</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=78423#p78423</link>
			<description><![CDATA[<p>Хорошо - 00010100 это байт. И что далее из этого проистекает?</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sun, 22 Dec 2013 17:08:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=78423#p78423</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=78422#p78422</link>
			<description><![CDATA[<p>Decimal, hexadecimal, binary, octal.</p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Sun, 22 Dec 2013 17:01:29 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=78422#p78422</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=78421#p78421</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Видимо, это уточнение (D / H / B / O).</p></blockquote></div><p>Мой случай совсем запущенный - (D / H / B / O) тоже ни о чём не говорит.<br />Двоичная система в моём понимании это <span class="bbu">только</span> единицы и нули.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sun, 22 Dec 2013 16:35:58 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=78421#p78421</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=78420#p78420</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>если система двоичная, что значит лат. &quot;b&quot;?</p></blockquote></div><p> Видимо, это уточнение (D / H / B / O).</p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Sun, 22 Dec 2013 15:50:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=78420#p78420</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=78418#p78418</link>
			<description><![CDATA[<p>Спасибо. <br />Но мне всё равно пока ничего не ясно. </p><div class="codebox"><pre><code>речь идет о двоичной системе.
00000101b &lt;&lt; 2 = 00010100b</code></pre></div><p>если система двоичная, что значит лат. &quot;b&quot;?</p><div class="codebox"><pre><code>SetFormat, IntegerFast, h
MsgBox, % 1 | 2 &lt;&lt; 16</code></pre></div><p>На выходе: 0x20001</p><p>Что куда смещено? На 16 позиций чего? Что всё таки &quot;делает&quot; &quot;|&quot;? Ничего непонятно.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sun, 22 Dec 2013 14:55:58 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=78418#p78418</guid>
		</item>
	</channel>
</rss>
