<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=120115&amp;view=findpost&amp;p=901656</guid>
        <pubDate>Mon, 31 Oct 2005 12:42:06 +0000</pubDate>
        <title>Hint на системных кнопках</title>
        <link>https://forum.sources.ru/index.php?showtopic=120115&amp;view=findpost&amp;p=901656</link>
        <description><![CDATA[Rouse_: Довольно сложный вопрос. Так просто не сделаешь. Нужно отлавливать WM_NCMOUSEMOVE и WM_NCHITTEST в них блокировать системный хинт и отрисовывать свой. Нет временипример делать. Но тут еще одно - если ты их решил модифицировать, то тебе нужно еще и два системных меню русифицировать. то которое в заголовке формы и то которое в тулбаре внизу. Это на порядок проще и делается вот таким кодом:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">unit Unit1;</div><div class="code_line">&nbsp;</div><div class="code_line">interface</div><div class="code_line">&nbsp;</div><div class="code_line">uses</div><div class="code_line">&nbsp;&nbsp;Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;</div><div class="code_line">&nbsp;</div><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;TForm1 = class(TForm)</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure FormCreate(Sender: TObject);</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;Form1: TForm1;</div><div class="code_line">&nbsp;</div><div class="code_line">implementation</div><div class="code_line">&nbsp;</div><div class="code_line">{$R *.dfm}</div><div class="code_line">&nbsp;</div><div class="code_line">procedure ChangeMenuLanguage(AHandle: THandle);</div><div class="code_line">const</div><div class="code_line">&nbsp;&nbsp;RusTranscriptionCount = 6;</div><div class="code_line">&nbsp;&nbsp;SysMenuID: array [0..RusTranscriptionCount - 1] of UINT =</div><div class="code_line">&nbsp;&nbsp; &nbsp;(SC_RESTORE, SC_MOVE, SC_SIZE, SC_MINIMIZE, SC_MAXIMIZE, SC_CLOSE);</div><div class="code_line">&nbsp;&nbsp;RusTranscription: array [0..RusTranscriptionCount - 1] of String =</div><div class="code_line">&nbsp;&nbsp; &nbsp;( &#39;&amp;Восстановить&#39;, &#39;&amp;Переместить&#39;, &#39;&amp;Размер&#39;, &#39;&amp;Свернуть&#39;,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;&#39;Р&amp;азвернуть&#39;, &#39;&amp;Закрыть&#39;#9&#39;Alt+F4&#39;);</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;SysMenu: HMENU;</div><div class="code_line">&nbsp;&nbsp;MenuItem: TMenuItemInfo;</div><div class="code_line">&nbsp;&nbsp;ItemCount, I, A: Integer;</div><div class="code_line">&nbsp;&nbsp;MenuString: array [0..MAXCHAR - 1] of Char;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;SysMenu := GetSystemMenu(AHandle, False);</div><div class="code_line">&nbsp;&nbsp;if SysMenu &#60;&#62; 0 then</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;ItemCount := GetMenuItemCount(SysMenu);</div><div class="code_line">&nbsp;&nbsp; &nbsp;for I := 0 to ItemCount - 1 do</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;ZeroMemory(@MenuItem, SizeOf(TMenuItemInfo));</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;MenuItem.cbSize := SizeOf(TMenuItemInfo);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;MenuItem.fMask := MIIM_ID or MIIM_STRING or MIIM_BITMAP;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;MenuItem.dwTypeData := MenuString;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;MenuItem.cch := MAXCHAR;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if GetMenuItemInfo(SysMenu, I, True, MenuItem) then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for A := 0 to RusTranscriptionCount - 1 do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if SysMenuID[A] = MenuItem.wID then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MenuItem.dwTypeData := PChar(RusTranscription[A]);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MenuItem.cch := Length(RusTranscription[A]);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if not SetMenuItemInfo(SysMenu, I, True, MenuItem) then RaiseLastOSError;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm1.FormCreate(Sender: TObject);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;ChangeMenuLanguage(Handle);</div><div class="code_line">&nbsp;&nbsp;ChangeMenuLanguage(Application.Handle);</div><div class="code_line">end;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>Rouse_</author>
        <category>Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	