<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Высота и ширина вкладок tab]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9056&amp;type=atom" />
	<updated>2016-04-29T07:16:16Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=9056</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=103185#p103185" />
			<content type="html"><![CDATA[<p>Наверно, просто у вас тут разговор вперемежку и о тех, и о других. Потом, иногда ведь нужно получить и Int из UInt тоже.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2016-04-29T07:16:16Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=103185#p103185</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=103184#p103184" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>Так сработает, только если число не выходит за границы Short:</p></blockquote></div><p>Не совсем понял. Если ты о моём коде, то он и предназначен для Short.</p>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2016-04-29T05:12:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=103184#p103184</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=103183#p103183" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2016-04-29T04:37:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=103183#p103183</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102873#p102873" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2016-04-23T12:31:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102873#p102873</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102869#p102869" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>YMP пишет:</cite><blockquote><p>Ну, вообще-то тип WORD — это 16 бит.</p></blockquote></div><p>То есть в вашем примере параметр также остаётся 32 бит? Просто не понятно число 48.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2016-04-23T11:51:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102869#p102869</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102868#p102868" />
			<content type="html"><![CDATA[<p>Ну, вообще-то тип WORD — это 16 бит. Поэтому сдвиг на 32 бита тут не к месту. А в примере с GetCursorPos половинки числа имеют по 32 бита. Функция вполне нормально распакует, ведь она знает, что ей должны передать. То, что АНК оперирует в сдвигах 64-битными числами, не значит, что он их и передаст. Если тип указан как int или uint, то он при вызове функциии обрежет число до 32 бит.</p>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2016-04-23T11:45:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102868#p102868</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102865#p102865" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2016-04-23T11:20:15Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102865#p102865</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102858#p102858" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2016-04-23T05:27:58Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102858#p102858</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102821#p102821" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2016-04-22T14:49:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102821#p102821</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=78426#p78426" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2013-12-22T18:38:01Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=78426#p78426</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=78423#p78423" />
			<content type="html"><![CDATA[<p>Хорошо - 00010100 это байт. И что далее из этого проистекает?</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-12-22T17:08:22Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=78423#p78423</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=78422#p78422" />
			<content type="html"><![CDATA[<p>Decimal, hexadecimal, binary, octal.</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2013-12-22T17:01:29Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=78422#p78422</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=78421#p78421" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Видимо, это уточнение (D / H / B / O).</p></blockquote></div><p>Мой случай совсем запущенный - (D / H / B / O) тоже ни о чём не говорит.<br />Двоичная система в моём понимании это <span class="bbu">только</span> единицы и нули.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-12-22T16:35:58Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=78421#p78421</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=78420#p78420" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>если система двоичная, что значит лат. &quot;b&quot;?</p></blockquote></div><p> Видимо, это уточнение (D / H / B / O).</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2013-12-22T15:50:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=78420#p78420</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Высота и ширина вкладок tab]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=78418#p78418" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-12-22T14:55:58Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=78418#p78418</id>
		</entry>
</feed>
