<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MikeSoft &#187; Windows Vista</title>
	<atom:link href="http://mikesoft.ws/tag/windows-vista/feed/" rel="self" type="application/rss+xml" />
	<link>http://mikesoft.ws</link>
	<description>Practical Software</description>
	<lastBuildDate>Mon, 28 Nov 2011 18:09:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>MDI и Windows Vista</title>
		<link>http://mikesoft.ws/2009/08/13/mdi-windows-vista/</link>
		<comments>http://mikesoft.ws/2009/08/13/mdi-windows-vista/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 09:53:53 +0000</pubDate>
		<dc:creator>Smike</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Советы]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[MDI]]></category>
		<category><![CDATA[Windows Vista]]></category>

		<guid isPermaLink="false">http://mikesoft.ws/?p=202</guid>
		<description><![CDATA[В Windows Vista во многих MDI приложениях часто наблюдается баг (субъективно &#8212; в SP1/SP2 значительно реже) при максимизации дочернего окна &#8212; оно занимает не всю отведенную ему область. Справа остается небольшое пространство. Ответ был найден на MSDN форуме, но применительно к MFC. Но в Delphi эта проблема также встречается и решается аналогично. Вот исходный код, [...]]]></description>
			<content:encoded><![CDATA[<p>В Windows Vista во многих MDI приложениях часто наблюдается баг (субъективно &#8212; в SP1/SP2 значительно реже) при максимизации дочернего окна &#8212; оно занимает не всю отведенную ему область. Справа остается небольшое пространство.<span id="more-202"></span></p>
<p>Ответ был найден на MSDN форуме, но применительно к MFC. Но в Delphi эта проблема также встречается и решается аналогично. Вот исходный код, который поможет исправить проблему. Его нужно добавить к дочернему окну (FormStyle = fsMDIChild).</p>

<div class="wp_syntax"><div class="code"><pre class="delphi" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">type</span>
  TMDIChild <span style="color: #000066;">=</span> <span style="color: #000000; font-weight: bold;">class</span><span style="color: #000066;">&#40;</span>TForm<span style="color: #000066;">&#41;</span>
  <span style="color: #000000; font-weight: bold;">private</span>
    <span style="color: #000000; font-weight: bold;">procedure</span> WMGetMinMaxInfo<span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> Message<span style="color: #000066;">:</span> TWMGetMinMaxInfo<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> message WM_GETMINMAXINFO<span style="color: #000066;">;</span>
  <span style="color: #000066;">...</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
<span style="color: #000066;">...</span>
<span style="color: #808080; font-style: italic;">(*
Оригинальный комментарий к решению:
--------------------------------------------------------------------------------
Заплатка на MFC версий ниже 8.0
&nbsp;
В MFC версиях 8.0 на Vista есть проблема, когда
окно дочернего MDI фрейма максимизируется при максимизированном
родительском MDI фрейме. В этом случаи максимальный размер окна ограничивается
данными структуры MINMAXINFO, которые были вычесленны ранее
системой при заданных стилях окна.
&nbsp;
Однако сам MFC в процессе ресайза этого окна любит менять ему
стили на ходу в результате система путается и MINMAXINFO содержит неправильные
данные.
&nbsp;
Это было не критично на XP и более старых системах, т.к. ошибка
была в 1 пиксель, теперь же на Vista, когда бордюр имеет занчительную ширину (4
пикселя), эта ошибка стала заметна (как раз на эту ширину - 4 пикселя).
&nbsp;
Чтобы исправить ошибу я вручную правлю структуру MINMAXINFO под
максимально возможный размер окна.
--------------------------------------------------------------------------------
&nbsp;
Smike: Похоже этот баг перенесли и в Delphi :)
*)</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">procedure</span> TMDIChild<span style="color: #000066;">.</span><span style="color: #006600;">WMGetMinMaxInfo</span><span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> Message<span style="color: #000066;">:</span> TWMGetMinMaxInfo<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  <span style="color: #000000; font-weight: bold;">if</span> WindowState &lt;&gt; wsMaximized <span style="color: #000000; font-weight: bold;">then</span>
    <span style="color: #000000; font-weight: bold;">inherited</span>
  <span style="color: #000000; font-weight: bold;">else</span>
    <span style="color: #000000; font-weight: bold;">with</span> Message<span style="color: #000066;">.</span><span style="color: #006600;">MinMaxInfo</span><span style="color: #000066;">^</span> <span style="color: #000000; font-weight: bold;">do</span>
    <span style="color: #000000; font-weight: bold;">begin</span>
      <span style="color: #000000; font-weight: bold;">if</span> ptMaxTrackSize<span style="color: #000066;">.</span><span style="color: #006600;">X</span> &lt; ptMaxSize<span style="color: #000066;">.</span><span style="color: #006600;">X</span> <span style="color: #000000; font-weight: bold;">then</span> ptMaxTrackSize<span style="color: #000066;">.</span><span style="color: #006600;">X</span> <span style="color: #000066;">:</span><span style="color: #000066;">=</span> ptMaxSize<span style="color: #000066;">.</span><span style="color: #006600;">X</span><span style="color: #000066;">;</span>
      <span style="color: #000000; font-weight: bold;">if</span> ptMaxTrackSize<span style="color: #000066;">.</span><span style="color: #006600;">Y</span> &lt; ptMaxSize<span style="color: #000066;">.</span><span style="color: #006600;">Y</span> <span style="color: #000000; font-weight: bold;">then</span> ptMaxTrackSize<span style="color: #000066;">.</span><span style="color: #006600;">Y</span> <span style="color: #000066;">:</span><span style="color: #000066;">=</span> ptMaxSize<span style="color: #000066;">.</span><span style="color: #006600;">Y</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
<span style="color: #808080; font-style: italic;">{ // Если не жалко пару десятков килобайт
  // в исполняемом файле - можно использовать функции модуля Math
  if WindowState &lt;&gt; wsMaximized then
    inherited
  else
    with Message.MinMaxInfo^ do
    begin
      ptMaxTrackSize.X := Max(ptMaxTrackSize.X, ptMaxSize.X);
      ptMaxTrackSize.Y := Max(ptMaxTrackSize.Y, ptMaxSize.Y);
    end;}</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://mikesoft.ws/2009/08/13/mdi-windows-vista/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>И снова о пользе Windows Vista</title>
		<link>http://mikesoft.ws/2007/11/22/windows-vista-usability/</link>
		<comments>http://mikesoft.ws/2007/11/22/windows-vista-usability/#comments</comments>
		<pubDate>Thu, 22 Nov 2007 09:58:42 +0000</pubDate>
		<dc:creator>Smike</dc:creator>
				<category><![CDATA[Советы]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[TFileOpenDialog]]></category>
		<category><![CDATA[Windows Vista]]></category>

		<guid isPermaLink="false">http://mikesoft.ws/?p=97</guid>
		<description><![CDATA[Во время разработки своей новой программы я решил вплотную взглянуть на новый компонент Delphi 2007 — TFileOpenDialog, который инкапсулирует современный диалог открытия файлов в Windows Vista. Те функции, что я в нем увидел, меня приятно удивили. В первую очередь, я нашел в нем ту функциональность, которая как раз была мне нужна. В приложении необходимо создавать [...]]]></description>
			<content:encoded><![CDATA[<p>Во время разработки своей новой программы я решил вплотную взглянуть на новый  компонент Delphi 2007 — <span style="font-weight: bold;">TFileOpenDialog</span>,  который инкапсулирует современный диалог открытия файлов в <span style="font-weight: bold;">Windows Vista</span>. Те функции, что я в нем увидел,  меня приятно удивили.<span id="more-97"></span></p>
<p>В первую очередь, я нашел в нем ту  функциональность, которая как раз была мне нужна. В приложении необходимо  создавать и выбирать файлы в определенной папке и её подпапках. В TOpenDialog  нельзя запретить смену каталога. В TFileOpenDialog — можно! Появилось событие  <span style="font-weight: bold;">OnFolderChanging</span>, где вот таким вот  простым кодом мы можем запретить, например, переходить в папки нижнего уровня по  сравнению с начальной:</p>

<div class="wp_syntax"><div class="code"><pre class="delphi" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">procedure</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">FolderChangingEvent</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">var</span> CanChange<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">Boolean</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  CanChange <span style="color: #000066;">:</span><span style="color: #000066;">=</span> AnsiStartsText<span style="color: #000066;">&#40;</span>FileOpenDialog1<span style="color: #000066;">.</span><span style="color: #006600;">DefaultFolder</span><span style="color: #000066;">,</span>
                              FileOpenDialog1<span style="color: #000066;">.</span><span style="color: #006600;">FileName</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span></pre></div></div>

<p>Это  как раз реализует нужную мне функциональность. Это одна из тех &#171;мелочей&#187;,  которыми наполнена Windows Vista, но которые так приятно облегчают работу и  программистов, и пользователей.</p>
<p>Какие же еще возможности приподносит нам  TFileOpenDialog? Это события <span style="font-weight: bold;">OnFileOkClick</span>, которое позволяет запретить  закрывать диалог в случае неудовлетворительного выбора, и <span style="font-weight: bold;">OnShareViolation</span>, позволяющее задавать реакцию  на выбор файлов, используемых другими приложениями.</p>
<p>Сравним также свойства <span style="font-weight: bold;">Options</span> старого и нового  диалогов. Визуальное сравнение возможных значений этих свойств дало понять, что  большинство параметров имеют аналоги и в старом диалоге (выделены жирным):</p>
<pre>TFileDialogOption = (
 <span style="font-weight: bold;">fdoOverWritePrompt</span>,
 fdoStrictFileTypes,
 <span style="font-weight: bold;">fdoNoChangeDir</span>,
 fdoPickFolders,
 fdoForceFileSystem,
 fdoAllNonStorageItems,
 <span style="font-weight: bold;">fdoNoValidate</span>,
 <span style="font-weight: bold;">fdoAllowMultiSelect</span>,
 <span style="font-weight: bold;">fdoPathMustExist</span>,
 <span style="font-weight: bold;">fdoFileMustExist</span>,
 <span style="font-weight: bold;">fdoCreatePrompt</span>,
 <span style="font-weight: bold;">fdoShareAware</span>,
 <span style="font-weight: bold;">fdoNoReadOnlyReturn</span>,
 <span style="font-weight: bold;">fdoNoTestFileCreate</span>,
 fdoHideMRUPlaces,
 fdoHidePinnedPlaces,
 <span style="font-weight: bold;">fdoNoDereferenceLinks</span>,
 <span style="font-weight: bold;">fdoDontAddToRecent</span>,
 <span style="font-weight: bold;">fdoForceShowHidden</span>,
 fdoDefaultNoMiniMode,
 fdoForcePreviewPaneOn
);</pre>
<p>Остановимся на значениях, не имеющих аналогов. Часть из  них настраивает вид самого диалога:</p>
<ul>
<li><span style="font-weight: bold;">fdoForcePreviewPaneOn</span> отображает  панель предварительного просмотра;</li>
<li><span style="font-weight: bold;">fdoDefaultNoMiniMode</span> запрещает  открытие диалога в сжатом виде (только строка ввода имени файла) — только для  диалогов сохранения;</li>
<li><span style="font-weight: bold;">fdoHidePinnedPlaces</span> убирает <span style="font-style: italic;">стандартные</span> избранные ссылки, собственные мы  по прежнему можем задавать (!);</li>
<li><span style="font-weight: bold;">fdoHideMRUPlaces</span> описывается как  &#171;Hide places of recently opened or saved items&#187;, но реально мне не удалось пока  понять, о чем идет речь.</li>
</ul>
<p>Значение <span style="font-weight: bold;">fdoPickFolders</span> позволяет использовать диалог  открытия файлов как диалог выбора папок, а <span style="font-weight: bold;">fdoStrictFileTypes</span> позволяет указать, что нужно  сохранять файл только с одним из предопределенных расширений.</p>
<p>А вот  свойство <span style="font-weight: bold;">fdoNoChangeDir</span> хоть и есть среди  возможных значений, но как уверяет справочная система, это значение не  используется. Это и не удивительно, ведь есть более гибкое событие OnFolderChanging.</p>
<p>В новом диалоге есть и другие полезные свойства и  методы. С помощью коллекции <span style="font-weight: bold;">FavoriteLinks</span> можно добавлять собственные избранные ссылки. Свойства <span style="font-weight: bold;">FileNameLabel</span>, <span style="font-weight: bold;">OKButtonLabel</span>, <span style="font-weight: bold;">Title</span> позволяют изменить названия отдельных  элементов интерфейса диалога (текст перед полем ввода файла, текст кнопки OK и  заголовок диалога). Старый TOpenDialog позволял изменять только собственный  заголовок. Коллекция <span style="font-weight: bold;">FileTypes</span> более  наглядно, чем свойство Filter из TOpenDialog позволяет задавать фильтры для  диалога. Особенно удобно, что это индексированный список, таким образом легко  можно проверить, какому расширению соответствует тот или иной тип, используя  свойство <span style="font-weight: bold;">FileTypeIndex</span>.</p>
]]></content:encoded>
			<wfw:commentRss>http://mikesoft.ws/2007/11/22/windows-vista-usability/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Удобство, о котором раньше приходилось только мечтать</title>
		<link>http://mikesoft.ws/2007/09/16/dreamed-usability/</link>
		<comments>http://mikesoft.ws/2007/09/16/dreamed-usability/#comments</comments>
		<pubDate>Sun, 16 Sep 2007 09:09:51 +0000</pubDate>
		<dc:creator>Smike</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[TFileOpenDialog]]></category>
		<category><![CDATA[Windows Vista]]></category>

		<guid isPermaLink="false">http://mikesoft.ws/?p=85</guid>
		<description><![CDATA[Наверняка перед многими когда-либо вставала задача: открыть ряд файлов одного типа, но расположенных в различных подкаталогах. Если у вас есть Total Commander, то это конечно не составляет труда. Там можно просмотреть все файлы в данной папке и её подпапках, можно вывести результат поиска на панель: Во многих случаях этого достаточно. Эти файлы можно перетянуть в [...]]]></description>
			<content:encoded><![CDATA[<p>Наверняка перед многими когда-либо вставала задача: открыть ряд файлов одного  типа, но расположенных в различных подкаталогах.</p>
<p><span id="more-85"></span></p>
<p>Если у вас есть Total  Commander, то это конечно не составляет труда. Там можно просмотреть все файлы в  данной папке и её подпапках, можно вывести результат поиска на  панель:</p>
<p><a href="http://mikesoft.ws/wp-content/uploads/2009/02/tc.png"><img height="129" width="250" class="alignnone size-medium wp-image-86" title="Total Commander Search" alt="Total Commander Search" src="http://mikesoft.ws/wp-content/uploads/2009/02/tc-250x129.png" /></a></p>
<p>Во многих случаях этого достаточно. Эти файлы можно перетянуть в редактор, браузер или другую программу, поддерживающую вставку файлов с помощью Drag&#8217;n'Drop. Но если программа не поддерживает Drag&#8217;n'Drop? Да и Total Commander может попросту не оказаться под рукой.</p>
<p>В Windows Vista можно легко и просто сразу открыть группу файлов. В диалоге открытия, как и во всех окнах Проводника, есть встроенный поиск.</p>
<p><a href="http://mikesoft.ws/wp-content/uploads/2009/02/opendialog.png"><img height="196" width="250" class="alignnone size-medium wp-image-87" title="opendialog" alt="opendialog" src="http://mikesoft.ws/wp-content/uploads/2009/02/opendialog-250x196.png" /></a></p>
<p>Введя в строку поиска фильтр файлов мы получим список всех нужных файлов во всех вложенных каталогах:</p>
<p><a href="http://mikesoft.ws/wp-content/uploads/2009/02/filter.png"><img height="198" width="250" class="alignnone size-medium wp-image-88" title="filter" alt="filter" src="http://mikesoft.ws/wp-content/uploads/2009/02/filter-250x198.png" /></a></p>
<p><a href="http://mikesoft.ws/wp-content/uploads/2009/02/test.png"><img height="185" width="250" class="alignright size-medium wp-image-89" title="test" alt="test" src="http://mikesoft.ws/wp-content/uploads/2009/02/test-250x185.png" /></a>Проверим, как это работает. Дано: Delphi 2007 &mdash; 1 шт., компоненты TButton, TMemo и новый компонент TFileOpenDialog с закладки Vista Dialogs &mdash; тоже по 1 шт. А также прямые руки &mdash; 2 шт. TFileOpenDialog &mdash; это новый компонент, который представляет собой программный интерфейс для нового диалога открытия файлов в Windows Vista. Чтобы эксперимент удался, нужно выставить у компонента свойство Options := [fdoAllowMultiSelect], остальные значения нас не интересуют. Ну и под конец, чтобы эксперимент удался, пишем следующий код для события клика по кнопке:</p>

<div class="wp_syntax"><div class="code"><pre class="delphi" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">procedure</span> TForm2<span style="color: #000066;">.</span><span style="color: #006600;">Button1Click</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  <span style="color: #000000; font-weight: bold;">if</span> FileOpenDialog1<span style="color: #000066;">.</span><span style="color: #006600;">Execute</span> <span style="color: #000000; font-weight: bold;">then</span>
    Memo1<span style="color: #000066;">.</span><span style="color: #006600;">Lines</span> <span style="color: #000066;">:</span><span style="color: #000066;">=</span> FileOpenDialog1<span style="color: #000066;">.</span><span style="color: #006600;">Files</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span></pre></div></div>

<p>После этого запускаем пример, выбираем какую-нибудь папку, вводим фильтр и получаем следующую картину:</p>
<p><a href="http://mikesoft.ws/wp-content/uploads/2009/02/result.png"><img height="250" width="229" class="alignnone size-medium wp-image-91" title="result" alt="result" src="http://mikesoft.ws/wp-content/uploads/2009/02/result-229x250.png" /></a></p>
<p>Вот так просто решается данная задача в Windows Vista. Все найденные файлы корректно можно получить из диалога, вместе с правильными путями. Так что несмотря на все разговоры об отсутствии чего-либо нового и удобного в этой ОС, здесь полно разных удобств, которые хоть и не всегда заметно, но облегчают нашу работу.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://mikesoft.ws/2007/09/16/dreamed-usability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Что заставляет тормозить Windows Vista Start Menu?</title>
		<link>http://mikesoft.ws/2007/09/09/windows-vista-start-menu/</link>
		<comments>http://mikesoft.ws/2007/09/09/windows-vista-start-menu/#comments</comments>
		<pubDate>Sun, 09 Sep 2007 09:04:50 +0000</pubDate>
		<dc:creator>Smike</dc:creator>
				<category><![CDATA[Советы]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[Windows Vista]]></category>

		<guid isPermaLink="false">http://mikesoft.ws/?p=83</guid>
		<description><![CDATA[Как известно, в Windows Vista обычное иерархическое меню Пуск было заменено более удобным &#171;древовидным&#187;. Но данное нововведение имеет и обратную сторону: бывает, что это меню работает медленнее, чем привычное старое. И вот, оказывается, почему. Самая главная причина замедления работы меню Пуск это подсветка новых инсталлированных программ. Мной замечено, что при наличии новых ярлыков в меню [...]]]></description>
			<content:encoded><![CDATA[<p>Как известно, в Windows Vista обычное иерархическое меню Пуск было заменено  более удобным &#171;древовидным&#187;. Но данное нововведение имеет и обратную сторону:  бывает, что это меню работает медленнее, чем привычное старое. И вот,  оказывается, почему.<span id="more-83"></span></p>
<p>Самая главная причина замедления работы меню Пуск  это подсветка новых инсталлированных программ. Мной замечено, что при наличии  новых ярлыков в меню <span style="font-weight: bold;">All Programs</span>, оно  начинает открываться с ощутимым замедлением, особенно если добавлена целая папка  программ с большим количеством элементов. С чем это связано, мне трудно сказать.  Может проверяется время создания у всех подэлементов новой папки с ярлыками.  Отключение этой возможности помогает сильно сэкономить начальное время открытия  меню All Programs.</p>
<p>А вот буквально только что провел интересное  наблюдение. Если в меню есть ярлык на *.url-файл и он находится в зоне  видимости, то Windows Explorer начинает сильно потреблять ресурсы процессора.  Причина этого также неведома. Хотя, как по мне, то делать такие ярлыки — дурной  тон, лучше размещать сами *.url-файлы в меню.</p>
]]></content:encoded>
			<wfw:commentRss>http://mikesoft.ws/2007/09/09/windows-vista-start-menu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

