<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Комментарии на: Окна нестандартной формы</title>
	<atom:link href="http://2lx.ru/2009/04/okna-nestandartnoj-formy/feed/" rel="self" type="application/rss+xml" />
	<link>http://2lx.ru/2009/04/okna-nestandartnoj-formy/</link>
	<description>Блог о программировании для смартфонов и ПК</description>
	<lastBuildDate>Sat, 12 May 2012 01:43:39 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>От: фыв</title>
		<link>http://2lx.ru/2009/04/okna-nestandartnoj-formy/comment-page-1/#comment-5062</link>
		<dc:creator>фыв</dc:creator>
		<pubDate>Wed, 29 Dec 2010 14:12:03 +0000</pubDate>
		<guid isPermaLink="false">http://2lx.ru/?p=299#comment-5062</guid>
		<description>В ГИфЕ сохранять надо картинку, иначе будет херня!</description>
		<content:encoded><![CDATA[<p>В ГИфЕ сохранять надо картинку, иначе будет херня!</p>]]></content:encoded>
	</item>
	<item>
		<title>От: Name=)</title>
		<link>http://2lx.ru/2009/04/okna-nestandartnoj-formy/comment-page-1/#comment-4906</link>
		<dc:creator>Name=)</dc:creator>
		<pubDate>Mon, 14 Jun 2010 22:59:53 +0000</pubDate>
		<guid isPermaLink="false">http://2lx.ru/?p=299#comment-4906</guid>
		<description>protected const int WM_NCHITTEST = 0x0084; 
        protected const int HTCAPTION = 2;


        protected override void WndProc(ref Message m)
        {
            if (m.Msg == WM_NCHITTEST)
            {
                m.Result = (IntPtr)HTCAPTION;
                return;
            }
           
                
            base.WndProc(ref m);
}

Это работает очень даже хорошо. Пример был взят из инета.
Возникает другая проблема: Как теперь свернуть окно по двойному щелчку мыши в произвольном месте формы? Даже если подписаться на событие, оно не будет обрабатываться.</description>
		<content:encoded><![CDATA[<p>protected const int WM_NCHITTEST = 0&times;0084; </p><p>protected const int HTCAPTION = 2;</p><p>protected override void WndProc (ref Message m)</p><p>{</p><p>if (m.Msg == WM_NCHITTEST)</p><p>{</p><p>m.Result = (IntPtr) HTCAPTION;</p><p>return;</p><p>}</p><p>base.WndProc (ref m);</p><p>}</p><p>Это работает очень даже хорошо. Пример был взят из инета.</p><p>Возникает другая проблема: Как теперь свернуть окно по двойному щелчку мыши в произвольном месте формы? Даже если подписаться на событие, оно не будет обрабатываться.</p>]]></content:encoded>
	</item>
	<item>
		<title>От: Dezmont</title>
		<link>http://2lx.ru/2009/04/okna-nestandartnoj-formy/comment-page-1/#comment-4667</link>
		<dc:creator>Dezmont</dc:creator>
		<pubDate>Tue, 15 Dec 2009 22:04:11 +0000</pubDate>
		<guid isPermaLink="false">http://2lx.ru/?p=299#comment-4667</guid>
		<description>У меня при появлении сначала отображается весь рисунок вместе с черным.</description>
		<content:encoded><![CDATA[<p>У меня при появлении сначала отображается весь рисунок вместе с черным.</p>]]></content:encoded>
	</item>
	<item>
		<title>От: Кто-то</title>
		<link>http://2lx.ru/2009/04/okna-nestandartnoj-formy/comment-page-1/#comment-4666</link>
		<dc:creator>Кто-то</dc:creator>
		<pubDate>Tue, 15 Dec 2009 15:57:51 +0000</pubDate>
		<guid isPermaLink="false">http://2lx.ru/?p=299#comment-4666</guid>
		<description>Ошибаетесь, в xp тоже работает.</description>
		<content:encoded><![CDATA[<p>Ошибаетесь, в xp тоже работает.</p>]]></content:encoded>
	</item>
	<item>
		<title>От: Dezmont</title>
		<link>http://2lx.ru/2009/04/okna-nestandartnoj-formy/comment-page-1/#comment-4665</link>
		<dc:creator>Dezmont</dc:creator>
		<pubDate>Tue, 15 Dec 2009 10:13:45 +0000</pubDate>
		<guid isPermaLink="false">http://2lx.ru/?p=299#comment-4665</guid>
		<description>Но плавное появление справедливо олько для Vista или Seven. Или я ощибаюсь?</description>
		<content:encoded><![CDATA[<p>Но плавное появление справедливо олько для Vista или Seven. Или я ощибаюсь?</p>]]></content:encoded>
	</item>
	<item>
		<title>От: Кто-то</title>
		<link>http://2lx.ru/2009/04/okna-nestandartnoj-formy/comment-page-1/#comment-4210</link>
		<dc:creator>Кто-то</dc:creator>
		<pubDate>Sat, 27 Jun 2009 06:35:19 +0000</pubDate>
		<guid isPermaLink="false">http://2lx.ru/?p=299#comment-4210</guid>
		<description>Да, есть такое дело, за другие контролы не перетягивается.
В таком случае можно в событии &lt;strong&gt;OnLoad&lt;/strong&gt; формы пройтись по коллекции контролов и добавить новое событие для &lt;em&gt;MouseMove&lt;/em&gt; и &lt;em&gt;MouseDown&lt;/em&gt;:
&lt;blockquote&gt;            foreach (Control control in this.Controls)
            {
                control.MouseMove += new MouseEventHandler(Form1_MouseMove);
                control.MouseDown += new MouseEventHandler(Form1_MouseDown);
            }&lt;/blockquote&gt;
Текущие обработчики этих событий это не заменит (будут выполняться оба обработчика).

А проблему с тем, что функция перемещения  &quot;работает не верно&quot; можно исправить немного преобразовав функцию-обработчик события onMouseMove:
&lt;blockquote&gt;            if (sender != this)
            {
                Control control = (Control)sender;
                mouse_offset = new Point(-e.X - control.Location.X, -e.Y - control.Location.Y);
            }
            else
            {
                mouse_offset = new Point(-e.X, -e.Y);
            }&lt;/blockquote&gt;

&lt;a href=&quot;/uploads/cs/customWinForm2.zip&quot; rel=&quot;nofollow&quot;&gt;Вот&lt;/a&gt; доработанный пример.</description>
		<content:encoded><![CDATA[<p>Да, есть такое дело, за другие контролы не перетягивается.</p><p>В таком случае можно в событии <strong>OnLoad</strong> формы пройтись по коллекции контролов и добавить новое событие для <em>MouseMove</em> и <em>MouseDown</em>:</p><blockquote><p> foreach (Control control in this.Controls)</p><p>{</p><p>control.MouseMove += new MouseEventHandler (Form1_MouseMove);</p><p>control.MouseDown += new MouseEventHandler (Form1_MouseDown);</p><p>}</p></blockquote><p>Текущие обработчики этих событий это не заменит (будут выполняться оба обработчика).</p><p>А проблему с тем, что функция перемещения &laquo;работает не верно&raquo; можно исправить немного преобразовав функцию-обработчик события onMouseMove:</p><blockquote><p> if (sender != this)</p><p>{</p><p>Control control = (Control) sender;</p><p>mouse_offset = new Point (-e.X&nbsp;&mdash; control.Location.X, -e.Y&nbsp;&mdash; control.Location.Y);</p><p>}</p><p>else</p><p>{</p><p>mouse_offset = new Point (-e.X, -e.Y);</p><p>}</p></blockquote><p><noindex><a href="/uploads/cs/customWinForm2.zip" rel="nofollow">Вот</a></noindex> доработанный пример.</p>]]></content:encoded>
	</item>
	<item>
		<title>От: semion</title>
		<link>http://2lx.ru/2009/04/okna-nestandartnoj-formy/comment-page-1/#comment-4151</link>
		<dc:creator>semion</dc:creator>
		<pubDate>Thu, 25 Jun 2009 09:06:50 +0000</pubDate>
		<guid isPermaLink="false">http://2lx.ru/?p=299#comment-4151</guid>
		<description>Не актуально в  силу следующей проблемы:
при добавлении других контролов на форму, тех же label-ов или картинок - за них тоже нужно двигать форму.
Ставить каждому новому контролу событие - неверное решение.
Да и работает оно при таком раскладе не верно.
Попробуй к себе текст добавь и потягай</description>
		<content:encoded><![CDATA[<p>Не актуально в силу следующей проблемы:</p><p>при добавлении других контролов на форму, тех же label-ов или картинок&nbsp;&mdash; за них тоже нужно двигать форму.</p><p>Ставить каждому новому контролу событие&nbsp;&mdash; неверное решение.</p><p>Да и работает оно при таком раскладе не верно.</p><p>Попробуй к себе текст добавь и потягай</p>]]></content:encoded>
	</item>
</channel>
</rss>

