<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Picture]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=8759</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=8759&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Picture».]]></description>
		<lastBuildDate>Mon, 12 May 2014 07:30:28 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Picture]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=82897#p82897</link>
			<description><![CDATA[<p>Всплыл более простой метод.<br />Например по префиксу в переменной контрола:<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>
Gui, Add, Picture, vCl_Picture gClipboard Icon133, Shell32.dll 
Gui, Add, Text, gClipboard vCl_Text x+10 wp hp +0x201, Hello
Gui, Show
Clipboard = Test  
OnMessage(0x203, &quot;WM_LBUTTONDBLCLK&quot;) 
Return

WM_LBUTTONDBLCLK()  {   
    If InStr(A_GuiControl, &quot;Cl_&quot;)
        Return 0
}
  
Clipboard:
    ToolTip, % Clipboard
    Return
</code></pre></div></div></div><p>Или по классу:<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>
Gui, Add, Picture, gClipboard Icon133, Shell32.dll 
Gui, Add, Text, gClipboard x+10 wp hp +0x201, Hello 
Gui, Show
Clipboard = Test    
OnMessage(0x203, &quot;WM_LBUTTONDBLCLK&quot;) 
Return

WM_LBUTTONDBLCLK(wp, lp)  {  
    MouseGetPos,,,,class 
    IfInString, class, Static
        Return 0
}
  
Clipboard:
    ToolTip, % Clipboard
    Return
</code></pre></div></div></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Mon, 12 May 2014 07:30:28 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=82897#p82897</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Picture]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=82084#p82084</link>
			<description><![CDATA[<p>Да тут надо писать Биллу <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Mon, 21 Apr 2014 07:45:07 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=82084#p82084</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Picture]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=82081#p82081</link>
			<description><![CDATA[<p>Нет, в сторонних так не получится. Фича контрола Static, это стандартный контрол Windows, который может использовать любое приложение. Копировать там можно то, что копируется, т.е. текст. Да, юзер должен об этом знать, по идее, иначе бессмысленно. Но почему-то даже в описании этого контрола на MSDN об этой фиче ничего нет.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Mon, 21 Apr 2014 07:41:58 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=82081#p82081</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Picture]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=82076#p82076</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Можно вместо неё подставить свою процедуру и уже из неё вызывать стандартную. Т.е. вы можете какие-то сообщения обрабатывать по-другому, заменять их на другие или просто блокировать.</p></blockquote></div><p>Ну это чертовски круто!&nbsp; <br />А возможно перехватывать в контролах сторонних приложений?<br /></p><div class="codebox"><pre><code>
Run notepad,,,pid 
ControlGet, id, hwnd,,edit1, ahk_pid %pid% 
SubclassStatic(id) 
Return 

StaticWndProc(hWnd, uMsg, wParam, lParam, uIdSubclass, dwRefData) {
    static WM_CHAR = 0x102  
    if (uMsg = WM_CHAR)
        ToolTip WM_CHAR
    return DllCall(&quot;DefSubclassProc&quot;, &quot;ptr&quot;, hWnd, &quot;uint&quot;, uMsg, &quot;ptr&quot;, wParam, &quot;ptr&quot;, lParam)
}

SubclassStatic(arr*) {
    static pNewWndProc := 0
    if (pNewWndProc = 0)
        pNewWndProc := RegisterCallback(&quot;StaticWndProc&quot;)
    for k,hWnd in arr
        DllCall(&quot;SetWindowSubclass&quot;, &quot;ptr&quot;, hWnd, &quot;ptr&quot;, pNewWndProc, &quot;ptr&quot;, 1, &quot;ptr&quot;, 0)
}
</code></pre></div><div class="quotebox"><blockquote><p>По задумке эта фича, видимо, должна облегчить юзеру копирование текста из таких контролов.</p></blockquote></div><p>Вообще я правильно понял что фича именно AutoHotkey?<br />И что там копировать? Если это в каком то случае надо по задумке, то это легко решить програмеру стандартными методами. А когда это не надо (чаще всего), то это не осознанное изменение пользователем буфера обмена, ничего не понимаю.ptr</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Mon, 21 Apr 2014 07:10:34 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=82076#p82076</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Picture]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=82065#p82065</link>
			<description><![CDATA[<p>По задумке эта фича, видимо, должна облегчить юзеру копирование текста из таких контролов.</p><p>Контрол класса Static — это окно, и у него есть оконная процедура, которая обрабатывает посылаемые ему сообщения. Можно вместо неё подставить свою процедуру и уже из неё вызывать стандартную. Т.е. вы можете какие-то сообщения обрабатывать по-другому, заменять их на другие или просто блокировать.<br /></p><div class="codebox"><pre><code>
Gui, Add, Picture, HWNDhwndPic gClipboard Icon133, Shell32.dll
SubclassStatic(hwndPic)
Gui, Add, Text, gClipboard, Hello
Gui, Show, w200
Clipboard = Test
Return

Clipboard:
    ToolTip, % Clipboard
    Return

GuiClose:
    ExitApp

StaticWndProc(hWnd, uMsg, wParam, lParam, uIdSubclass, dwRefData)
{
    static WM_LBUTTONDBLCLK := 0x203,  WM_LBUTTONDOWN := 0x201
    static WM_NCLBUTTONDBLCLK := 0xA3, WM_NCLBUTTONDOWN := 0xA1

    if (uMsg = WM_LBUTTONDBLCLK)
        uMsg := WM_LBUTTONDOWN
    else if (uMsg = WM_NCLBUTTONDBLCLK)
        uMsg := WM_NCLBUTTONDOWN
    return DllCall(&quot;DefSubclassProc&quot;, &quot;ptr&quot;, hWnd, &quot;uint&quot;, uMsg, &quot;ptr&quot;, wParam, &quot;ptr&quot;, lParam)
}

SubclassStatic(hWnd)
{
    static pNewWndProc := 0
    if (pNewWndProc = 0)
        pNewWndProc := RegisterCallback(&quot;StaticWndProc&quot;)
    DllCall(&quot;SetWindowSubclass&quot;, &quot;ptr&quot;, hWnd, &quot;ptr&quot;, pNewWndProc, &quot;ptr&quot;, 1, &quot;ptr&quot;, 0)
}
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Mon, 21 Apr 2014 04:46:59 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=82065#p82065</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Picture]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=82038#p82038</link>
			<description><![CDATA[<p>Добавлять абсолютно ко всем Picture процедурам этот костыль:<br /></p><div class="codebox"><pre><code>
Gui, -Caption +E0x08000000 -DPIScale +AlwaysOnTop
Gui, Add, Picture, Icon133 gBN3 border w111 h111, Shell32.dll     
Gui, Show, NA x111 y111 
Return 

BN3:       
    StClip(A_GuiControl)
    SendInput {Raw}%Clipboard%    
    Return 

StClip(v) {
    Static PrClip := Clipboard
    If Clipboard = %v%
        Clipboard := PrClip
    PrClip := Clipboard 
}
</code></pre></div><p> <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /><br />Обрабатывать как я думал в WM_LBUTTONDOWN по имени картинки не получается, без метки у Picture,&nbsp; A_GuiControl пустой, ну варианты тут конечно есть.<br /></p><div class="codebox"><pre><code>
OnMessage(0x201, &quot;WM_LBUTTONDOWN&quot;)
Gui, -Caption +E0x08000000 -DPIScale +AlwaysOnTop
Gui, Add, Picture, Icon133 vPicture border w111 h111, Shell32.dll
Gui, Show, NA x111 y111 
Return 

WM_LBUTTONDOWN(w, l)   {     
    ToolTip % w &quot;`n&quot; l &quot;`n&quot; A_GuiControl
}
</code></pre></div><p>Тут и GuiControlGet не хочет знать свой родной статик по имени:<br /></p><div class="codebox"><pre><code>WM_LBUTTONDOWN(w, l)   {     
    GuiControlGet, OutputVar, Name, %l% 
    ToolTip % w &quot;`n&quot; l &quot;`n&quot; OutputVar
}</code></pre></div><p>Так что остаётся только очень неудобный массив хэндлов.<br /></p><div class="quotebox"><blockquote><p>Ещё можно субклассировать контрол, т.е. подставить в него свою оконную процедуру и игнорировать сообщения о двойных кликах.</p></blockquote></div><p>Потому и любопытно узнать что Вы имели ввиду.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sun, 20 Apr 2014 17:47:55 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=82038#p82038</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Picture]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=82035#p82035</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Нет</p></blockquote></div><p>Ну хоть просто объясните.<br /></p><div class="quotebox"><blockquote><p>в чём именно вам эта фича мешает.</p></blockquote></div><p>Ну например хочу кликать, и чтоб буфер печатался:<br /></p><div class="codebox"><pre><code>
Gui, -Caption +E0x08000000 -DPIScale +AlwaysOnTop
Gui, Add, Picture, Icon133 gBN3 border w111 h111, Shell32.dll     
Gui, Show, NA x111 y111 
Return 

BN3:       
    SendInput {Raw}%Clipboard%    
    Return 
</code></pre></div><p>Но чёрт бы с ним. Получается ведь, есть у меня окно с кучей картинок - кнопок. Кликаю я по ним по своим нуждам, а буфер попорчен. В чём же тут фича?</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sun, 20 Apr 2014 17:37:39 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=82035#p82035</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Picture]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=82033#p82033</link>
			<description><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Или вы про это:<br /></p><div class="quotebox"><blockquote><p>Буду юзать WM_LBUTTONDOWN.</p></blockquote></div></blockquote></div><p>Нет, т.к. в свою очередь не понял, что вы имеете в виду. Я не в курсе, в чём именно вам эта фича мешает.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Sun, 20 Apr 2014 17:29:50 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=82033#p82033</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Picture]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=82026#p82026</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>начиная с Висты это фича контролов Static.</p></blockquote></div><p>Чтобы сделать такую &quot;фичу&quot;, надо иметь баг головного мозга.<br /></p><div class="quotebox"><blockquote><p>Ещё можно субклассировать контрол, т.е. подставить в него свою оконную процедуру и игнорировать сообщения о двойных кликах.</p></blockquote></div><p>А вот тут можно подробнее, если честно ни слова не понял.<br />Или вы про это:<br /></p><div class="quotebox"><blockquote><p>Буду юзать WM_LBUTTONDOWN.</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sun, 20 Apr 2014 16:44:40 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=82026#p82026</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Picture]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=82025#p82025</link>
			<description><![CDATA[<p>Да, начиная с Висты это фича контролов Static. Для картинки тоже этот класс используется, как я понял. Можно отключить стиль SS_NOTIFY, но тогда и связанные с контролами процедуры работать не будут. Ещё можно субклассировать контрол, т.е. подставить в него свою оконную процедуру и игнорировать сообщения о двойных кликах.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Sun, 20 Apr 2014 16:41:03 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=82025#p82025</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Picture]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=82020#p82020</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Написал у них на форуме:</p></blockquote></div><p>Что то я там ответ не понял, это что - фича?</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sun, 20 Apr 2014 15:41:29 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=82020#p82020</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Picture]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=82019#p82019</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Буфер обмена изменяется при двойном клике по static.</p></blockquote></div><p>Ну да, только на Picture есть ощущение, что двойной клик какой то более растянутый.&nbsp; <br /></p><div class="codebox"><pre><code>
Gui, Add, Picture, Icon133 gL Border, Shell32.dll
Gui Show
return

L:
    ToolTip % A_GuiEvent &quot;`n&quot; Clipboard
    Clipboard := &quot;Default clip&quot;  
    Sleep 200
    return
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sun, 20 Apr 2014 15:37:46 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=82019#p82019</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Picture]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=82007#p82007</link>
			<description><![CDATA[<p>Написал у них на форуме: <a href="http://ahkscript.org/boards/viewtopic.php?f=14&amp;t=3395">Double-click on a Gui control modifies the clipboard</a>.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Sun, 20 Apr 2014 12:11:47 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=82007#p82007</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Picture]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=82006#p82006</link>
			<description><![CDATA[<div class="codebox"><pre><code>Gui Margin, 50, 20
Gui Add, text, gL, Placeholder
Gui Show
return

L:
    ToolTip % A_GuiEvent &quot;`n&quot; Clipboard
    Clipboard := &quot;Default clip&quot;
    return

GuiClose:
    ExitApp</code></pre></div><p>Буфер обмена изменяется при двойном клике по static.</p>]]></description>
			<author><![CDATA[null@example.com (bWRmeA)]]></author>
			<pubDate>Sun, 20 Apr 2014 11:22:01 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=82006#p82006</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Picture]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=82004#p82004</link>
			<description><![CDATA[<p>Да, что то Я и неподумал даже об этом. Буду юзать WM_LBUTTONDOWN.<br />Но о проблеме напишите, Вы же хорошо инглиш знаете.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sun, 20 Apr 2014 11:15:11 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=82004#p82004</guid>
		</item>
	</channel>
</rss>
