<?xml version='1.0' encoding='utf-8' ?>
<!--  If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/  -->
<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:media='http://search.yahoo.com/mrss/' xmlns:atom10='http://www.w3.org/2005/Atom'>
<channel>
  <title>Норка хомячка</title>
  <link>http://homo-programmat.livejournal.com/</link>
  <description>Норка хомячка - LiveJournal.com</description>
  <lastBuildDate>Thu, 10 Jul 2008 11:11:45 GMT</lastBuildDate>
  <generator>LiveJournal / LiveJournal.com</generator>
  <lj:journal>homo_programmat</lj:journal>
  <lj:journalid>5392060</lj:journalid>
  <lj:journaltype>personal</lj:journaltype>
  <atom10:link rel='hub' href='http://pubsubhubbub.appspot.com/' />
  <image>
    <url>http://l-userpic.livejournal.com/23110700/5392060</url>
    <title>Норка хомячка</title>
    <link>http://homo-programmat.livejournal.com/</link>
    <width>100</width>
    <height>100</height>
  </image>

<item>
  <guid isPermaLink='true'>http://homo-programmat.livejournal.com/3171.html</guid>
  <pubDate>Thu, 10 Jul 2008 11:11:45 GMT</pubDate>
  <title>Mnemonics &amp; checkboxes</title>
  <link>http://homo-programmat.livejournal.com/3171.html</link>
  <description>Keywords: чекбокс, checkbox, мнемоник, mnemonic, акселератор, accelerator, галка, tick&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Проблема:&lt;/b&gt; Почему при нажатии мнемоника (Alt + подчеркнутая на контроле буква, перед которой в тексте окна на самом деле стоит &quot;&amp;&quot; ) у части чекбоксов ставится галочка, а у части нет?&lt;br /&gt;&lt;b&gt;Предыстория (несущественная здесь):&lt;/b&gt; Имеется табконтрол с закладками-страницами, на закладках разные контролы - все как обычно. Все контролы принадлежат одному и тому же диалогу, которому принадлежит и сам таб.&lt;br /&gt;&lt;b&gt;Исследование:&lt;/b&gt; Как вы думаете, в чем дело? Нуу? Нет вариантов? Оказалось, что все из-за контролов (выключенных и скрытых) с такими же мнемониками на других &quot;страницах&quot;. Видимо, в данном случае глюк винды - не обращая внимания на то что другие контролы выключены и скрыты, она все равно считает что их несколько с одинаковым мнемоником и галку не ставит.&lt;br /&gt;&lt;b&gt;Решение:&lt;/b&gt; Ничего умнее чем убирать мнемоники при выключении окна в голову не пришло. Если есть другой способ - буду рад узнать.&lt;br /&gt;&lt;br /&gt;&lt;font color=&quot;green&quot;&gt;&lt;br /&gt;&lt;b&gt;Problem&lt;/b&gt;: Upon pressing a mnemonic (Alt + letter underlined in control, it actually follows invisible &quot;&amp;&quot; in control&apos;s text) some checkboxes are ticked, and some are not.&lt;br /&gt;&lt;b&gt;Unneccessary description:&lt;/b&gt; I had a tab control with &quot;pages&quot; containing controls. All controls are childs to the same dialog, containing the tab itself.&lt;br /&gt;&lt;b&gt;Research:&lt;/b&gt; So, what do you thing the trouble could be? Any ideas? It&apos;s all due to controls (invisible and disabled) on other &quot;pages&quot;, which have the same mnemonics. Probably this is one of rare Windows bugs, it ignores control&apos;s disabled/invisible states and thinks that there are multiple controls with same mnemonic, that&apos;s why it won&apos;t tick the checkbox.&lt;br /&gt;&lt;b&gt;Solution:&lt;/b&gt; I didn&apos;t come up with anything better then removing mnemonics upon disabling the window. If you have a better solution, i&apos;d be glad to know it.&lt;br /&gt;&lt;/font&gt;</description>
  <comments>http://homo-programmat.livejournal.com/3171.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://homo-programmat.livejournal.com/2854.html</guid>
  <pubDate>Mon, 28 Apr 2008 12:35:52 GMT</pubDate>
  <title>WM_NCHITTEST &amp; HTTRANSPARENT</title>
  <link>http://homo-programmat.livejournal.com/2854.html</link>
  <description>&lt;b&gt;Как сделать окно, через определенные области которого можно кликать по контролам под ним.&lt;/b&gt;&lt;br /&gt;Допустим, вы пишете контрол наподобие рамки или окно наподобие увеличительного стекла. В то время как часть окна - самая обычная, другая часть должна быть &quot;прозрачной&quot; для кликов мышью, при этом вы хотите отрисовывать &quot;прозрачную&quot; часть, так что регионы не подходят. Итак - обработайте сообщение WM_NCHITTEST и для прозрачных областей верните HTTRANSPARENT, а для непрозрачных - например HTCLIENT. Случай из реальной жизни: &lt;a href=&quot;http://homo-programmat.livejournal.com/2388.html&quot;&gt;http://homo-programmat.livejournal.com/2388.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color=&quot;green&quot;&gt;&lt;b&gt;How to make a window that allows to click on underlying controls through it&lt;/b&gt;&lt;br /&gt;Imagine you&apos;re writing a control like a frame or a window like magnifier. A part of this window is common, and another part must allow to click through it on the underlying windows. In the same time you wish to draw &quot;transparent&quot; part, so regions won&apos;t do. Solution: handle WM_NCHITTEST and return HTTRANSPARENT for transparent areas, while returning something like HTCLIENT for non-transparent ones. Real-life case: &lt;a href=&quot;http://homo-programmat.livejournal.com/2388.html&quot;&gt;http://homo-programmat.livejournal.com/2388.html&lt;/a&gt;&lt;/font&gt;</description>
  <comments>http://homo-programmat.livejournal.com/2854.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://homo-programmat.livejournal.com/2725.html</guid>
  <pubDate>Mon, 28 Apr 2008 12:20:06 GMT</pubDate>
  <title>WS_CLIPSIBLINGS</title>
  <link>http://homo-programmat.livejournal.com/2725.html</link>
  <description>&lt;b&gt;Как сделать чтобы окно не загораживало контролы &quot;под ним&quot;&lt;/b&gt;&lt;br /&gt;Допустим, вы делаете контрол наподобие tab или &quot;рамки&quot;, внутри которого должны быть другие контролы, не являющиеся его чайлдами. Чтобы ваш контрол не загораживал внутренние независимо от относительного таб-ордера, поставьте ему стиль WS_CLIPSIBLINGS. Случай из реальной жизни: &lt;a href=&quot;http://homo-programmat.livejournal.com/2388.html&quot;&gt;http://homo-programmat.livejournal.com/2388.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color=&quot;green&quot;&gt;&lt;b&gt;How to stop a window from obscuring background controls&lt;/b&gt;&lt;br /&gt;If you&apos;re writing a control like a tab or a frame that will contain other non-child controls within its area and you want it not to obscure internal controls regardless of its tab-order, set WS_CLIPSIBLINGS style to your control. Real case here: &lt;a href=&quot;http://homo-programmat.livejournal.com/2388.html&quot;&gt;http://homo-programmat.livejournal.com/2388.html&lt;/a&gt;&lt;/font&gt;</description>
  <comments>http://homo-programmat.livejournal.com/2725.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://homo-programmat.livejournal.com/2388.html</guid>
  <pubDate>Mon, 28 Apr 2008 12:11:05 GMT</pubDate>
  <title>Tab control &amp; Z-Order и не только</title>
  <link>http://homo-programmat.livejournal.com/2388.html</link>
  <description>Это случай из реальной жизни. Следующие из него советы вы можете видеть в 2 записях выше.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Предыстория&lt;/b&gt;&lt;br /&gt;Я писал собственный TabControl &quot;с нуля&quot;. Связано это было с тем, что стандартный TabControl не позволяет отрисовывать свои страницы, только элементы заголовка, а для программы нужно было перерисовать его целиком. TabControl был успешно нарисован, и пришла пора его вставлять на место старого стандартного. И вот тут-то появилась проблема: если сабж по таб-ордеру идет перед элементами, которые лежат &quot;поверх&quot; него, то эти элементы рисуются, но по ним нельзя кликнуть - все клики получает TabControl. Если же TabControl идет по таб-ордеру после элементов, то он их загораживает и их не видно. Задача не так тривиальна как может показаться на первый взгляд, особенно если нельзя менять исторически сложившийся таб-ордер. При этом стандартный виндовский TabControl ведет себя одинаково независимо от своего положения - не загораживает контролы и не задерживает клики.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Решение&lt;/b&gt;&lt;br /&gt;1) Установить табконтролу (ну или что вы там рисуете) стиль WS_CLIPSIBLINGS. Это вырежет из области его перерисовки прямоугольники &quot;загороженных&quot; элементов управления, таким образом он не будет их загораживать &quot;графически&quot;.&lt;br /&gt;2) Обработать сообщение WM_NCHITTEST и для всех неинтересных областей (у TabControl это все кроме кнопок, переключающих страницы) вернуть HTTRANSPARENT, для остального - по усмотрению, например HTCLIENT. Это сделает ваш контрол прозрачным &quot;физически&quot;, и он больше не будет задерживать клики мышью.&lt;br /&gt;&lt;br /&gt;&lt;font color=&quot;green&quot;&gt;&lt;br /&gt;This is a real-life case. You can read advices following from it in two above records.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Story&lt;/b&gt;&lt;br /&gt;I was writing a tab control of my own from a scratch. I needed that because standard tabcontrol doesn&apos;t allow to draw its pages, only header buttons, but i needed to draw entire control. When the control was drawn and i started to replace old controls with new ones, a problem came up. If my new tab was tab-ordered before other controls, i couldn&apos;t click those controls because tab received clicks. If it was ordered after them, they received clicks but were not drawn because tab obscured them. I also had to keep the original tab-ordering intact. Surprisingly, default tab control ignores those problems and works well regardless of its ordering.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Soltuion&lt;/b&gt;&lt;br /&gt;1) Set WS_CLIPSIBLINGS style to your control. The regions of underlying controls (if any) will be extracted from its drawing area, so your control will not obscure underlying ones regardless of tab-order.&lt;br /&gt;2) Handle WM_NCHITTEST in your control and return HTTRANSPARENT for all areas that you wish to pass clicks through, returning something like HTCLIENT for &quot;solid&quot; areas. With that, your control will pass all mouse events to underlying controls regardless of tab-order.&lt;br /&gt;&lt;/font&gt;</description>
  <comments>http://homo-programmat.livejournal.com/2388.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://homo-programmat.livejournal.com/2165.html</guid>
  <pubDate>Mon, 28 Apr 2008 10:44:50 GMT</pubDate>
  <title>Смена курса</title>
  <link>http://homo-programmat.livejournal.com/2165.html</link>
  <description>После долгих размышлений и наблюдений стало понятно, что писать про жизнь я в ЖЖ все равно не буду. Но ведь не просто так я его завел? Итак, теперь тут будут публиковаться решения для нетривиальных проблем в программировании, с которыми мне пришлось столкнуться. Попутно из ЖЖ удален кое-какой хлам.</description>
  <comments>http://homo-programmat.livejournal.com/2165.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://homo-programmat.livejournal.com/1356.html</guid>
  <pubDate>Mon, 17 Apr 2006 23:54:54 GMT</pubDate>
  <title>А теперь - красивые фотки!</title>
  <link>http://homo-programmat.livejournal.com/1356.html</link>
  <description>Каждый раз когда смотрю на эти фотки, сделанные во время похода летом на Урал, так и хочется туда вернуться...&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www.rt.mipt.ru/~detectivestory/others/photo/Ural05/CIMG1198.JPG&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www.rt.mipt.ru/~detectivestory/others/photo/Ural05/CIMG1205.JPG&quot;&gt;</description>
  <comments>http://homo-programmat.livejournal.com/1356.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://homo-programmat.livejournal.com/1203.html</guid>
  <pubDate>Wed, 30 Mar 2005 10:26:02 GMT</pubDate>
  <title>Небольшой прикол</title>
  <link>http://homo-programmat.livejournal.com/1203.html</link>
  <description>Предыстория: с удовольствием прочитав две книги Злотникова из серии о Вечном, я озаботился поиском третьей - но не тут-то было. В итоге я обошел с девушкой три крупных книжных магазина, и, чуть уже не отчаявшись, решил купить в инете (в озоне). Купил, но теперь ее надо забрать - а все никак не могу собраться. Пока же залил книгу на палм, но с него читать... Мягко говоря, извращение. Не понимаю людей, которые что-то-там радостно вопят про читалки и покупают палмы для этого. Ну так вот,&lt;br /&gt;&lt;br /&gt;Вчера надоело ждать пока смогу забрать книгу из озона, и с палма читать тоже надоело. Написал на борде - дайте мол в единичке оную книгу.&lt;br /&gt;&lt;a href=&quot;http://board.rt.mipt.ru/?read=1982665&quot;&gt;http://board.rt.mipt.ru/?read=1982665&lt;/a&gt;&lt;br /&gt;Мне пишут - лана, заходи, 409 (моя бывшая комната в студенческой общаге). Я туда иду - и мне дают... МОЮ КНИГУ.&lt;br /&gt;&lt;br /&gt;От старшекурсников, когда я еще на 1 курсе селился, осталось несколько книг. Они мне не приглянулись по названию, а выбрасывать хорошие книги мне показалось неправильным. Так я их и хранил, и все руки не доходили в библиотеку отдать. А когда переезжал - забыл. Ну вот тут-то мне ее и вернули :) Девушка уже высказала мнение, что наверное это судьба :)</description>
  <comments>http://homo-programmat.livejournal.com/1203.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://homo-programmat.livejournal.com/929.html</guid>
  <pubDate>Wed, 16 Feb 2005 18:36:16 GMT</pubDate>
  <title>Сижу я тут ем свой доширак...</title>
  <link>http://homo-programmat.livejournal.com/929.html</link>
  <description>И тут вижу на ГЛАВНОМ сервере на работе в дистрибах папку &quot;Обновление для говнища под названием MSOffice&quot;. Чуть лапшой не подавился, блин, хоть бы предупреждали</description>
  <comments>http://homo-programmat.livejournal.com/929.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
</channel>
</rss>
