<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: A_GuiControlEvent]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=12982&amp;type=atom" />
	<updated>2017-09-08T22:21:38Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=12982</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: A_GuiControlEvent]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=119182#p119182" />
			<content type="html"><![CDATA[<p>Вот простой пример отслеживания наведения, двойного клика и клика правой кнопкой:<br /></p><div class="codebox"><pre><code>global WM_MOUSEMOVE := 0x200
     , WM_LBUTTONDBLCLK := 0x203
     , WM_RBUTTONDOWN := 0x204

Gui, Add, Text, w100 h100 border hwndhControl1
Gui, Add, Text, yp x+5 w100 h100 border hwndhControl2
Gui, Show

controls := [ {hwnd: hControl1, func: Func(&quot;Control1&quot;)}, {hwnd: hControl2, func: Func(&quot;Control2&quot;)} ]

OnMessage( WM_MOUSEMOVE, Func(&quot;MsgHandling&quot;).Bind(controls) )
OnMessage( WM_LBUTTONDBLCLK, Func(&quot;MsgHandling&quot;).Bind(controls) )
OnMessage( WM_RBUTTONDOWN, Func(&quot;MsgHandling&quot;).Bind(controls) )

Control1(msg)  {
   if (msg = WM_MOUSEMOVE) {
      TrayTip,, Курсор над контролом 1
   }
   if (msg = WM_LBUTTONDBLCLK)  {
      TrayTip,, Двойной клик по контролу 1
   }
   if (msg = WM_RBUTTONDOWN)  {
      TrayTip,, Правая кнопка нажата над контролом 1
   }
}

Control2(msg)  {
   if (msg = WM_MOUSEMOVE) {
      TrayTip,, Курсор над контролом 2
   }
   if (msg = WM_LBUTTONDBLCLK)  {
      TrayTip,, Двойной клик по контролу 2
   }
   if (msg = WM_RBUTTONDOWN)  {
      TrayTip,, Правая кнопка нажата над контролом 2
   }
}

MsgHandling(controls, wp, lp, msg)  {
   MouseGetPos,,,, hControl, 2
   if (msg = WM_MOUSEMOVE)  {
      for k, v in controls  {
         if (hControl = v.hwnd &amp;&amp; !v.hover)  {
            v.hover := true
            v.func.Call(msg)
            timer := Func(&quot;CheckHover&quot;).Bind(v)
            SetTimer, % timer, 50
         }
      }
   }
   if (msg = WM_LBUTTONDBLCLK || msg = WM_RBUTTONDOWN)  {
      for k, v in controls  {
         if (hControl = v.hwnd)
            v.func.Call(msg)
      }
   }
}

CheckHover(obj)  {
   MouseGetPos,,,, hControl, 2
   if (hControl != obj.hwnd)  {
      SetTimer,, Delete
      obj.hover := false
   }
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2017-09-08T22:21:38Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=119182#p119182</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: A_GuiControlEvent]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=119179#p119179" />
			<content type="html"><![CDATA[<p><strong>shahlik002</strong>, расскажите подробнее, что Вы делаете, нужна конкретика.</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2017-09-08T18:39:30Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=119179#p119179</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: A_GuiControlEvent]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=119177#p119177" />
			<content type="html"><![CDATA[<p>Есть такая особенность: если два раза левой кликнуть, то сработают 2 события &quot;одно_нажатие&quot; и 1 событие &quot;двойное_нажатие&quot;.<br />Так что тут сложно.</p><div class="quotebox"><blockquote><p>И какую-нибудь проверку организовать на пересечения контролов (у меня картинка за мышью двигается и неприятно затрагивает другие картинки) .</p></blockquote></div><p>Надо на передний план как-то вывести.</p>]]></content>
			<author>
				<name><![CDATA[MandarinKa02]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34409</uri>
			</author>
			<updated>2017-09-08T18:22:16Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=119177#p119177</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: A_GuiControlEvent]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=119174#p119174" />
			<content type="html"><![CDATA[<p>Есть аналоги A_GuiControlEvent?<br />Хочу для gui controla действия при наведении мыши , клике правой ,двойной левой и т.д.<br />А еще хорошо было бы узнать как картинки в gui передвигать на передний/задний план...<br />И какую-нибудь проверку организовать на пересечения контролов (у меня картинка за мышью двигается и неприятно затрагивает другие картинки) .</p>]]></content>
			<author>
				<name><![CDATA[shahlik002]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=37352</uri>
			</author>
			<updated>2017-09-08T17:11:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=119174#p119174</id>
		</entry>
</feed>
