Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 10 декабря!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Написание программ на чистом API


 program SmallPrg;
 
 uses
   Windows, Messages;
 
 const
   WinName = 'MainWClass';
 
 function MainWndProc(Window: HWnd; AMessage, WParam, LParam: Longint): Longint; stdcall;
 begin
   //подпрограмма обработки сообщений
   case AMessage of
     WM_DESTROY:
     begin
       PostQuitMessage(0);
       Result := 0;
       Exit;
     end;
     else
       Result := DefWindowProc(Window, AMessage, WParam, LParam);
   end;
 end;
 
 function InitApplication: Boolean;
 var
   wcx: TWndClass;
 begin
   //Заполняем структуру TWndClass
   // перерисовываем, если размер изменяется
   wcx.style := CS_HREDRAW or CS_VREDRAW;
   // адрес оконной процедуры
   wcx.lpfnWndProc := @MainWndProc;
   wcx.cbClsExtra := 0;
   wcx.cbWndExtra := 0;
   // handle to instance
   wcx.hInstance := hInstance;
   // загружаем стандандартную иконку
   wcx.hIcon := LoadIcon(0, IDI_APPLICATION);
   // загружаем стандартный курсор
   wcx.hCursor := LoadCursor(0, IDC_ARROW);
   // делаем светло-cерый фон
   wcx.hbrBackground := COLOR_WINDOW;
   // пока нет главного меню
   wcx.lpszMenuName := nil;
   // имя класса окна
   wcx.lpszClassName := PChar(WinName);
 
   // Регистрируем наш класс окна.
   Result := RegisterClass(wcx) <> 0;
 end;
 
 function InitInstance: HWND;
 begin
   // Создаем главное окно.
   Result := CreateWindow(
   // имя класса окна
   PChar(WinName),
   // заголовок
   'Small program',
   // стандартный стиль окна
   WS_OVERLAPPEDWINDOW,
   // стандартные горизонтальное, вертикальное положение, ширина и высота
   Integer(CW_USEDEFAULT),
   Integer(CW_USEDEFAULT),
   Integer(CW_USEDEFAULT),
   Integer(CW_USEDEFAULT),
   0,//нет родительского окна
   0,//нет меню
   hInstance, // handle to application instance
   nil); // no window-creation data
 end;
 
 var
   hwndMain: HWND;
   AMessage: msg;
 begin
   if (not InitApplication) then
     MessageBox(0, 'Ошибка регистрации окна', nil, mb_Ok)
   else
   begin
     hwndMain := InitInstance;
     if (hwndMain = 0) then
       MessageBox(0, 'Ошибка создания окна', nil, mb_Ok)
     else
     begin
       // Показываем окно и посылаем сообщение WM_PAINT оконной процедуре
       ShowWindow(hwndMain, CmdShow);
       UpdateWindow(hwndMain);
       while (GetMessage(AMessage, 0, 0, 0)) do
       begin
         TranslateMessage(AMessage);
         DispatchMessage(AMessage);
       end;
     end;
   end;
 
 end.
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS