Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> API научмте, что нужно знать 
:(
    Опции темы
ivan219
Дата 31.1.2006, 02:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: нет
Всего: 12



Вобщем хочу научится програмировать на WinAPI но с чего ночать незнаю, может вы поможете премером только полным а то я неразберуть если дадите только чать.

Также я незнаю как создовать эти преложения т.е. как простое Фаил - новые - приложение или по другому smile

Также может порекомендуете хорошую книгу по WinAPI smile

smile
PM MAIL ICQ   Вверх
RaIDeR
Дата 31.1.2006, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 20.6.2005

Репутация: нет
Всего: 4



Цитата(ivan219 @ 31.1.2006, 02:58 Найти цитируемый пост)

Вобщем хочу научится програмировать на WinAPI но с чего ночать незнаю, может вы поможете премером только полным а то я неразберуть если дадите только чать.

Думаю следует начать с создания окон, вот пример минимальной проги на Api:
Код

program Project1;

uses
  Windows, Messages;

const
  WNDCaption   = 'Application caption';
  WNDClassName = 'Application name';

var
  WND: HWND;
  WNDMsg: tagMsg;
  WNDClass: TWNDClass;

{$R Icon.res} // Обычный ресурс -> "Project1.res" переименованный в -> "Icon.res"...
{$R WindowsXP.res}

function ExtractIcon(hInst: HINST; lpszExeFileName: PChar; nIconIndex: UINT) : HICON; stdcall; external 'shell32.dll' name 'ExtractIconA';

function WindowProc(hWnd: HWND; Msg: UINT; wParam, lParam: LongInt) : LongInt; stdcall;
begin
  Result := 0;
  case Msg of
    WM_DESTROY: PostQuitMessage(0);
  else
    Result := DefWindowProc(hWnd, Msg, wParam, lParam);
  end;
end;

procedure WindowToCenter;
var
  Rect: TRect;
begin
  if GetWindowRect(WND, Rect) then
    SetWindowPos(WND, HWND_TOP,
               GetSystemMetrics(SM_CXSCREEN) div 2 - (Rect.Right - Rect.Left) div 2,
               GetSystemMetrics(SM_CYSCREEN) div 2 - (Rect.Bottom - Rect.Top) div 2,
               0, 0, SWP_NOSIZE or SWP_SHOWWINDOW);
end;

begin
  ZeroMemory(@WNDClass, SizeOf(TWNDClass));
  with WNDClass do
  begin
    Style         := CS_VREDRAW or CS_HREDRAW;
    lpfnWNDProc   := @WindowProc;
    hInstance     := GetModuleHandle(nil);
    hIcon         := ExtractIcon(0, PChar(ParamStr(0)), 0);
    hCursor       := LoadCursor(0, IDC_ARROW);
    hbrBackground := COLOR_BTNFACE + 1;
    lpszClassName := WNDClassName;
  end;

  if not Boolean(RegisterClass(WNDClass)) then 
  begin
    MessageBox(0, 'Ошибка регистрации класса !', nil, MB_ICONERROR or MB_SYSTEMMODAL);
    Halt;
  end;

  WND := CreateWindow(WNDClassName,
                      WNDCaption,
                      WS_OVERLAPPEDWINDOW,
                      Integer(CW_USEDEFAULT),
                      Integer(CW_USEDEFAULT),
                      Integer(CW_USEDEFAULT),
                      Integer(CW_USEDEFAULT),
                      0,
                      0,
                      hInstance, 
                      nil);

  WindowToCenter;

  while GetMessage(WNDMsg, 0, 0, 0) do
  begin
    TranslateMessage(WNDMsg);
    DispatchMessage(WNDMsg);
  end;
  Halt(WNDMsg.wParam);
end.

Со всеми используемыми ф-циями, предлагаю тебе разобраться самому ;)

Цитата(ivan219 @ 31.1.2006, 02:58 Найти цитируемый пост)

Также может порекомендуете хорошую книгу по WinAPI smile

WindowsSDK smile
PM MAIL   Вверх
ivan219
Дата 31.1.2006, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: нет
Всего: 12



А адрес где купить можно неподскажеш а то я искал в инет магазинах а там нет такой smile
PM MAIL ICQ   Вверх
_hunter
Дата 31.1.2006, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 9
Всего: 98



www.microsoft.com...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
ivan219
Дата 31.1.2006, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: нет
Всего: 12



Я же книгу просил из бумаги а не электронную да ещё и на английском smile
PM MAIL ICQ   Вверх
Bose
Дата 31.1.2006, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: нет
Всего: 51



PM MAIL WWW Skype   Вверх
ivan219
Дата 31.1.2006, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: нет
Всего: 12



А как в эту фарму добавить кнопку smile
Код

program Project1;    
uses    
  Windows, Messages;    
const    
  WNDCaption   = 'Application caption';    
  WNDClassName = 'Application name';    
var    
  WND: HWND;    
  WNDMsg: tagMsg;    
  WNDClass: TWNDClass;    
{$R Icon.res} // Обычный ресурс -> "Project1.res" переименованный в -> "Icon.res"...    
{$R WindowsXP.res}    
function ExtractIcon(hInst: HINST; lpszExeFileName: PChar; nIconIndex: UINT) : HICON; stdcall; external 'shell32.dll' name 'ExtractIconA';    
function WindowProc(hWnd: HWND; Msg: UINT; wParam, lParam: LongInt) : LongInt; stdcall;    
begin    
  Result := 0;    
  case Msg of    
    WM_DESTROY: PostQuitMessage(0);    
  else    
    Result := DefWindowProc(hWnd, Msg, wParam, lParam);    
  end;    
end;    
procedure WindowToCenter;    
var    
  Rect: TRect;    
begin    
  if GetWindowRect(WND, Rect) then    
    SetWindowPos(WND, HWND_TOP,    
               GetSystemMetrics(SM_CXSCREEN) div 2 - (Rect.Right - Rect.Left) div 2,    
               GetSystemMetrics(SM_CYSCREEN) div 2 - (Rect.Bottom - Rect.Top) div 2,    
               0, 0, SWP_NOSIZE or SWP_SHOWWINDOW);    
end;    
begin    
  ZeroMemory(@WNDClass, SizeOf(TWNDClass));    
  with WNDClass do    
  begin    
    Style         := CS_VREDRAW or CS_HREDRAW;    
    lpfnWNDProc   := @WindowProc;    
    hInstance     := GetModuleHandle(nil);    
    hIcon         := ExtractIcon(0, PChar(ParamStr(0)), 0);    
    hCursor       := LoadCursor(0, IDC_ARROW);    
    hbrBackground := COLOR_BTNFACE + 1;    
    lpszClassName := WNDClassName;    
  end;    
  if not Boolean(RegisterClass(WNDClass)) then    
  begin    
    MessageBox(0, 'Ошибка регистрации класса !', nil, MB_ICONERROR or MB_SYSTEMMODAL);    
    Halt;    
  end;    
  WND := CreateWindow(WNDClassName,    
                      WNDCaption,    
                      WS_OVERLAPPEDWINDOW,    
                      Integer(CW_USEDEFAULT),    
                      Integer(CW_USEDEFAULT),    
                      Integer(CW_USEDEFAULT),    
                      Integer(CW_USEDEFAULT),    
                      0,    
                      0,    
                      hInstance,    
                      nil);    
  WindowToCenter;    
  while GetMessage(WNDMsg, 0, 0, 0) do    
  begin    
    TranslateMessage(WNDMsg);    
    DispatchMessage(WNDMsg);    
  end;    
  Halt(WNDMsg.wParam);    
end.


И может ктонебудь распишит где што означает smile
PM MAIL ICQ   Вверх
Bose
Дата 31.1.2006, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: нет
Всего: 51



В дельфи, в меню Хелп, есть подпункт Windows SDK - там довольно подробно описано большинство функций. Обязательно смотри в MSDN

Если с английским уже совсем никак, то спроси гугла.

p.s. exb fk,fycrbq
PM MAIL WWW Skype   Вверх
Alexeis
Дата 31.1.2006, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 16
Всего: 459



ivan219 есть такой набор компонентов acl - практически голый
Api ни какого визуального програмирования все компоненты очень простые и их можно самому исследовать.
Там есть combobx, Button, Edit, ListBox, CheckBox, форма кроме того имеются дополнительные библиотеки легкий Sysutils (aclUtils) RegIni
IniFiles, и много не визуальных классов.
Что хорошо все классы - ультралегкие.
Правда memo - там нет, но я сейчас как раз сам его пишу.
Пока мой мемо в результирующий проект добавляет 0,5 кБ!!!

В качестве helpa можно пользоваться Microsoft Api Help (тот что идет с delphi) кроме того есть много статей на русском языке.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
ivan219
Дата 31.1.2006, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: нет
Всего: 12



А вот такой вопрос возможно исползовать в API компонент XPManifest и намноголи это повлияет на размер а то мне этот стиль нравится красиво получается smile smile
PM MAIL ICQ   Вверх
Guedda
Дата 31.1.2006, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 3
Всего: 78



Можно не компонент юзать, а написать манифест, и подкрепить его к программе. Воспользуйся поиском, и увидишь, что тема уже была затронута.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Alexeis
Дата 31.1.2006, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 16
Всего: 459



Создается xml файлик специальной структуры
Помещается в ресурс и все.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Voyager
Дата 2.2.2006, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 532
Регистрация: 8.2.2005

Репутация: 4
Всего: 18



Минимальное приложение на WinAPI
На сайте есть еще несколько примеров/исходников.

Это сообщение отредактировал(а) Voyager - 2.2.2006, 07:51
PM   Вверх
Guedda
Дата 2.2.2006, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 3
Всего: 78



Скачай DRKB, Справочник по Delphi, там очень много статей. Сам учился по ним.
А на форуме задавай вопросы по существу, а не риторические.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
ivan219
Дата 2.2.2006, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: нет
Всего: 12



Всё понял будем по существу.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.1259 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.