<?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=131016&amp;view=findpost&amp;p=1001287</guid>
        <pubDate>Tue, 31 Jan 2006 08:01:26 +0000</pubDate>
        <title>приложение на апи</title>
        <link>https://forum.sources.ru/index.php?showtopic=131016&amp;view=findpost&amp;p=1001287</link>
        <description><![CDATA[Rouse_: Вот тебе примерчик: <br>
<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">////////////////////////////////////////////////////////////////////////////////</div><div class="code_line">//</div><div class="code_line">// &nbsp;****************************************************************************</div><div class="code_line">// &nbsp;* Unit Name : Access</div><div class="code_line">// &nbsp;* Purpose &nbsp; : демо простого приложения на АПИ.</div><div class="code_line">// &nbsp;* Author &nbsp; &nbsp;: Александр (Rouse_) Багель</div><div class="code_line">// &nbsp;* Version &nbsp; : 1.0</div><div class="code_line">// &nbsp;****************************************************************************</div><div class="code_line">//</div><div class="code_line">&nbsp;</div><div class="code_line">program Access;</div><div class="code_line">&nbsp;</div><div class="code_line">uses</div><div class="code_line">&nbsp;&nbsp;Windows,</div><div class="code_line">&nbsp;&nbsp;Messages;</div><div class="code_line">&nbsp;</div><div class="code_line">resourcestring</div><div class="code_line">&nbsp;&nbsp;TXT_CAPTION = &#39;Ввод пароля&#39;;</div><div class="code_line">&nbsp;&nbsp;TXT_INSTALL = &#39;Принять&#39;;</div><div class="code_line">&nbsp;&nbsp;TXT_CANCEL = &#39;Отмена&#39;;</div><div class="code_line">&nbsp;&nbsp;TXT_STATUS = &#39;Введите пароль:&#39;;</div><div class="code_line">&nbsp;&nbsp;TXT_NEWUSER = &#39;Значение пароля: &#39;;</div><div class="code_line">&nbsp;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;MainWindow &nbsp; &nbsp;: TWndClassEx;</div><div class="code_line">&nbsp;&nbsp;Handle,</div><div class="code_line">&nbsp;&nbsp;hFontNormal,</div><div class="code_line">&nbsp;&nbsp;btnOk,</div><div class="code_line">&nbsp;&nbsp;btnCancel,</div><div class="code_line">&nbsp;&nbsp;Edit,</div><div class="code_line">&nbsp;&nbsp;Label1 &nbsp; &nbsp; &nbsp; &nbsp;: HWND;</div><div class="code_line">&nbsp;&nbsp;Msg &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : TMsg;</div><div class="code_line">&nbsp;&nbsp;Left,</div><div class="code_line">&nbsp;&nbsp;Top,</div><div class="code_line">&nbsp;&nbsp;Width,</div><div class="code_line">&nbsp;&nbsp;Height &nbsp; &nbsp; &nbsp; &nbsp;: Integer;</div><div class="code_line">&nbsp;</div><div class="code_line">const</div><div class="code_line">&nbsp;&nbsp;BTN_APPLY_ID = 100;</div><div class="code_line">&nbsp;&nbsp;BTN_CANCEL_ID = 105;</div><div class="code_line">&nbsp;&nbsp;EDIT_ID = 110;</div><div class="code_line">&nbsp;</div><div class="code_line">// Центрирование формы</div><div class="code_line">// =============================================================================</div><div class="code_line">procedure CenterMainForm;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;ScrWidth, ScrHeight: Cardinal;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;ScrWidth := GetSystemMetrics(SM_CXSCREEN);</div><div class="code_line">&nbsp;&nbsp;ScrHeight := GetSystemMetrics(SM_CYSCREEN);</div><div class="code_line">&nbsp;&nbsp;Left := (Integer(ScrWidth) - Width) div 2;</div><div class="code_line">&nbsp;&nbsp;Top := (Integer(ScrHeight) - Height) div 2;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">// Главная оконная процедура</div><div class="code_line">// =============================================================================</div><div class="code_line">function WindowProc(Wnd: HWND; Msg: Integer;</div><div class="code_line">&nbsp;&nbsp;WParam: WPARAM; LParam: LPARAM): LRESULT; stdcall;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;S: String;</div><div class="code_line">&nbsp;&nbsp;Len: Integer;</div><div class="code_line">&nbsp;&nbsp;DC: HDC;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := 0;</div><div class="code_line">&nbsp;&nbsp;case Msg of</div><div class="code_line">&nbsp;&nbsp; &nbsp;WM_DESTROY:</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;PostQuitMessage(0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Result:=0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp;WM_COMMAND:</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;case LoWord(WParam) of</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;BTN_APPLY_ID: // Нажатие на кнопку &quot;Принять&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Len := SendMessage(Edit, WM_GETTEXTLENGTH, 0, 0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Inc(Len);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SetLength(S, Len);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SendMessage(Edit, WM_GETTEXT, Len, Integer(@S[1]));</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MessageBox(Handle, PChar(TXT_NEWUSER + S), PChar(TXT_CAPTION), MB_OK);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PostQuitMessage(0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Result := 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;BTN_CANCEL_ID: // Нажатие на кнопку &quot;Отмена&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PostQuitMessage(0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Result := 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;EDIT_ID: // Обработчик Edit-а</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// В зависимости от кол-ва символов, включаем/отключаем кнопку &quot;Принять&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;EnableWindow(btnOk, Boolean(SendMessage(Edit, WM_GETTEXTLENGTH, 0, 0)));</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp;WM_CTLCOLORSTATIC: // Изменения цвета STATIC</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if LParam = Label1 then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Result := DefWindowProc(Wnd, Msg, WParam, LParam);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;SetTextColor(WParam, $FF0000);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;end; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp;Result := DefWindowProc(Wnd, Msg, WParam, LParam);</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">&nbsp;</div><div class="code_line">// Здесь программа стартует</div><div class="code_line">// =============================================================================</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;// Инициализируем оконный класс</div><div class="code_line">&nbsp;&nbsp;with MainWindow do</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;cbSize := SizeOf(MainWindow);</div><div class="code_line">&nbsp;&nbsp; &nbsp;style := CS_HREDRAW or CS_VREDRAW;</div><div class="code_line">&nbsp;&nbsp; &nbsp;lpfnWndProc := @WindowProc;</div><div class="code_line">&nbsp;&nbsp; &nbsp;cbClsExtra := 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;cbWndExtra := 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;hIcon := LoadIcon(0, IDI_APPLICATION);</div><div class="code_line">&nbsp;&nbsp; &nbsp;hCursor &nbsp;:= LoadCursor(0, IDC_ARROW);</div><div class="code_line">&nbsp;&nbsp; &nbsp;hbrBackground := COLOR_BTNFACE + 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;lpszMenuName := nil;</div><div class="code_line">&nbsp;&nbsp; &nbsp;lpszClassName := &#39;TAccessForm&#39;;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;&nbsp;MainWindow.hInstance := HInstance;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;// Регистрируем оконный класс</div><div class="code_line">&nbsp;&nbsp;if RegisterClassEx(MainWindow) = 0 then Exit;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;// Подготавливаем координаты для центрирования формы</div><div class="code_line">&nbsp;&nbsp;Width := 360;</div><div class="code_line">&nbsp;&nbsp;Height := 130;</div><div class="code_line">&nbsp;&nbsp;CenterMainForm;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;// Создаем форму</div><div class="code_line">&nbsp;&nbsp;Handle := CreateWindow(&#39;TAccessForm&#39;,</div><div class="code_line">&nbsp;&nbsp; &nbsp;PChar(TXT_CAPTION), WS_OVERLAPPED or WS_SYSMENU,</div><div class="code_line">&nbsp;&nbsp; &nbsp;Left, Top, Width, Height, 0, 0, HInstance, nil);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;// Создаем кнопку &quot;Принять&quot;</div><div class="code_line">&nbsp;&nbsp;btnOk := CreateWindow(&#39;BUTTON&#39;, PChar(TXT_INSTALL),</div><div class="code_line">&nbsp;&nbsp; &nbsp;BS_PUSHBUTTON or WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON,</div><div class="code_line">&nbsp;&nbsp; &nbsp;270, 65, 75, 25, Handle, BTN_APPLY_ID, hInstance, nil);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;// Отключаем ее до ввода пароля</div><div class="code_line">&nbsp;&nbsp;EnableWindow(btnOk, False);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;// Создаем кнопку &quot;Отмена&quot;</div><div class="code_line">&nbsp;&nbsp;btnCancel := CreateWindow(&#39;BUTTON&#39;, PChar(TXT_CANCEL),</div><div class="code_line">&nbsp;&nbsp; &nbsp;BS_PUSHBUTTON or WS_CHILD or WS_VISIBLE,</div><div class="code_line">&nbsp;&nbsp; &nbsp;190, 65, 75, 25, Handle, BTN_CANCEL_ID, hInstance, nil);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;// Создаем поле ввода</div><div class="code_line">&nbsp;&nbsp;Edit := CreateWindowEx(WS_EX_CLIENTEDGE, &#39;EDIT&#39;, nil, WS_CHILD or WS_VISIBLE,</div><div class="code_line">&nbsp;&nbsp; &nbsp;10, 30, 335, 21, Handle, EDIT_ID, HInstance, nil);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;// Задаем симфол который будет отображаться ри вводе пароля</div><div class="code_line">&nbsp;&nbsp;SendMessage(Edit, EM_SETPASSWORDCHAR, Ord(&#39;*&#39;), 0);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;// Создаем Label</div><div class="code_line">&nbsp;&nbsp;Label1 := CreateWindow(&#39;STATIC&#39;, PChar(TXT_STATUS),</div><div class="code_line">&nbsp;&nbsp; &nbsp;WS_VISIBLE or WS_CHILD, 10, 13, 230, 14, Handle, 0, hInstance, nil);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;// Создаем нужный шрифт</div><div class="code_line">&nbsp;&nbsp;hFontNormal := CreateFont(-11, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DEFAULT_PITCH or FF_DONTCARE, &#39;MS Sans Serif&#39;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;// назначаем этот шрифт всем оконным элементам</div><div class="code_line">&nbsp;&nbsp;if hFontNormal &#60;&#62; 0 then</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;SendMessage(btnOk, WM_SETFONT, hFontNormal, 0);</div><div class="code_line">&nbsp;&nbsp; &nbsp;SendMessage(btnCancel, WM_SETFONT, hFontNormal, 0);</div><div class="code_line">&nbsp;&nbsp; &nbsp;SendMessage(Edit, WM_SETFONT, hFontNormal, 0);</div><div class="code_line">&nbsp;&nbsp; &nbsp;SendMessage(Label1, WM_SETFONT, hFontNormal, 0);</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;// Показываем окно</div><div class="code_line">&nbsp;&nbsp;ShowWindow(Handle, SW_SHOW);</div><div class="code_line">&nbsp;&nbsp;// Ставим его поверх всех</div><div class="code_line">&nbsp;&nbsp;SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0,</div><div class="code_line">&nbsp;&nbsp; &nbsp;SWP_NOSIZE or SWP_NOMOVE);</div><div class="code_line">&nbsp;&nbsp;// Ставим фокус в поле ввода</div><div class="code_line">&nbsp;&nbsp;SetFocus(Edit);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;// Начинаем крутить цикл выборки сообщений</div><div class="code_line">&nbsp;&nbsp;while GetMessage(Msg, 0, 0, 0) do</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;TranslateMessage(Msg);</div><div class="code_line">&nbsp;&nbsp; &nbsp;DispatchMessage(Msg);</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;&nbsp; </div><div class="code_line">end.</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>Rouse_</author>
        <category>Hello, World&#33;</category>
      </item>
	
      </channel>
      </rss>
	