Здесь представлена информация о API на основе примеров для начинающих.

За основу взят язык Object Pascal, компилятор входит в состав Дельфи и находится в каталоге BIN. Для запуска надо в командной строке набрать dcc32.exe [namefile], я для этих целей использую bat файлы.

Начнем с самого начала- создание окна. Программа созда╠т окно, и пока ничего не делает.

uses windows,messages;// Загрузка необходимых модулей.
var am:TMsg;
    hw:hwnd;//Хендл окна
    a_name:lpctstr;//Имя класса

// Процедура которая вызывается Виндами по какому нибудь событию
// Пока пустая. 
function wsa (hww:hwnd;mes:word;wp:wparam;lp:lparam):dword;stdcall;export;
begin
  // Процедура DefWindowProc - стандартна процедура для обработки событий
  case mes of
   WM_DESTROY:PostQuitMessage(0)//Посылает сообщение wm_quit на сообщение о уничтожении окна.
  else 
   result:=defwindowproc(hww,mes,wp,lp);//стандартная процедура Windows'а
  end; 
end;

//Функция регистрации класса
function winreg:boolean;
var wc:TWndClass;// Это экзэмпляр класса
begin
  wc.style:=cs_hredraw or cs_vredraw; //Стиль отображения
  wc.lpfnwndproc:=@wsa; //Адресс процедуры обработки событий
  wc.cbclsextra:=0;//
  wc.cbwndextra:=sizeof(wc);//
  wc.hinstance:=HInstance;//
  wc.hicon:=loadicon(Thandle(nil),0); //Иконка
  wc.hcursor:=loadcursor(Thandle(nil),IDC_NO); //Курсор
  wc.hbrbackground:=color_window;//Цвет окна интересный эффект если равно hbrush(nil);
  wc.lpszmenuname:=nil; //Указатель на меню
  wc.lpszclassname:=a_name; //Имя класса
  result:=registerclass(wc)<>0; //Вызов процедуры регистрации
end;

//функция создания и отображения окна
function wincreate:hwnd;
var hW:hwnd; //Хандл
begin
  // процедура создания окна a_name - класс 'Cool'-заголовок
  //1 и 1 - координаты начала окна, 500 и 500 - координаты конца окна
  hw:=createwindow(a_name,'Cool',WS_OVERLAPPEDWINDOW,1,1,500,500,0,0,hinstance,nil);
  if hw<>0 then begin
    showwindow(hw,sw_show);//Отображение
    updatewindow(hw);//Обновление
  end;
  result:=hw;
end;


begin
  a_name:='Cooling';
  if not winreg then
  begin
    messagebox(0,'No Window Registred.',nil,mb_ok);
    exit;
  end;
  hw:=wincreate;
  if hw=0 then
  begin
    messagebox(0,'No window created.',nil,mb_ok);
    exit;
  end;
  while getmessage(am,0,0,0)do begin
    translatemessage(am);
    dispatchmessage(am);
  end;
  halt(am.wparam);
end.

 

Со всем остальным ещ╠ не совсем разобрался, но как разберусь сразу напишу. К началу следующей недели наверно можно ожидать описание различных констант.

Пишите мне на permvas@chat.ru
              griaznoff@mail.ru

1.11.99