Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
https://profit44.ru neonbro неоновые вывески на заказ.
Сейчас на сайте
Гостей: 11
На сайте нет зарегистрированных пользователей

Пользователей: 13,364
новичок: eqvufy
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование процесса поступления заявок в систему, состоящую из трёх Э...
Лабораторная работа по динамическим спискам на Turbo Pascal (перемещение...
База данных склада на Delphi + Схема БД

Минимальная программа
program WinMin;

{************ М.И.Н.И.М.А.Л.Ь.Н.А.Я. П.Р.О.Г.Р.А.М.М.А. *****************}
{* Среда Windows управляет программой посредством посылки сообщений. *}
{* Прикладная программа, обрабатывая посылаемые ей сообщения, выполняет *}
{* необходимые действия, заложенные её функциональным назначением. *}
{* Windows - программа состоит из трёх частей: *}
{* Инициализация - регистрация класса окна, создание и отображение окна.*}
{* Выполнение - цикл обработки сообщений. *}
{* Завершение - закрытие окна и возврат в среду Windows. *}
{************************************************************************}

uses
Windows,Messages;

const
AppName = 'WinMin';

Var
Window : HWnd; { ссылка на окно, позволяет однозначно определить каждое окно. HWND = type LongWord }
Message : TMsg; { сообщение - реакция ядра Windows на какое-либо событие }
WindowClass : TWndClass; { структура класса окна, включает адрес "оконной" функции, обрабатывающей
поступающие от Windows сообщения, атрибуты всех окон, принадлежащих
этому классу, т.е. задаются основные свойства класса }

// Специальная "оконная" функция, обрабатывающая сообщения, посылаемые окну.
// Вызывается непосредственно ядром Windows (косвенно-вызываемая - callback function).
// Параметры эквивалентны полям структуры типа TMsg.
function WindowProc (Window : HWnd; Message, WParam : Word;
LParam : LongInt) : LongInt; stdcall;
Var
dc : HDC; { ссылка на контекст, должна использоваться для работы с окном }
Begin
WindowProc := 0;
// Здесь указывается реакция оконной функции на сообщения Windows.
case Message of
wm_Destroy : begin { ядро Windows пытается закрыть окно - обработку этого сообщения нельзя опускать }
PostQuitMessage (0); { посылает прикладной программе сообщение wm_Quit код 0 - успешное завершение }
Exit; { выход из текущей процедуры}
end;
wm_Create: begin { ядро Windows пытается создать окно } (* если контекст окна больше не используется, это сообщение можно не обрабатывать *)
dc := GetDC (Window); { GetDC возвращает контекст рабочей области окна }
ReleaseDC (Window, dc); { освобождает контекст }
end;
end; // case
// Все сообщения, не обрабатываемые оконной функцией, передаются функции ядра Windows DefWindowProc.
WindowProc := DefWindowProc (Window, Message, WParam, LParam); { DefWindowProc обеспечивает обработку тех сообщений окна, которые не обрабатывает прикладная программа }
End;

// Процедура WinMain создает и регистрирует класс окна,
// затем создаёт и отображает окно на экране и активизирует цикл
// работы с сообщениями.
procedure WinMain;
Begin
// Всем полям структуры присваиваются определённые значения
// (определяются атрибуты окна).
With WindowClass do
begin
Style := cs_HRedraw or cs_VRedraw; { стиль окна класса: окно будет перерисовываться при изменении его горизонтальных и вертикальных размеров }
lpfnWndProc := @WindowProc; { указатель на оконную функцию, которая будет обрабатывать все сообщения, посылаемые окну }
cbClsExtra := 0; { выделенная память, используемая программой по своему усмотрению }
cbWndExtra := 0; { выделенная память, используемая программой по своему усмотрению }
hInstance := 0; { ссылка на экземпляр программы, используется ядром Windows для однозначного определения сегмента данных экземпляра программы }
hIcon := LoadIcon (0, idi_Application); { ссылка на иконку для окна, для отображения минимизированного окна, сейчас - иконка, соответствующая приложению }
hCursor := LoadCursor (0, idc_Arrow); { ссылка на курсор, сейчас - в виде стрелки }
hbrBackground := GetStockObject (White_Brush); { ссылка на шаблон заполнения фона для окна }
lpszMenuName := ''; { ссылка на строку имени меню }
lpszClassName := AppName; { имя класса }
end;
// Регистрация окна с заданными атрибутами.
// Параметр функции - структура типа TWndClass, содержащая атрибуты окон данного класса.
If RegisterClass (WindowClass) = 0 then
Halt (255); { регистрация невозможна, завершение работы программы }
Window := CreateWindow { создает окно и возвращает ссылку на окно типа HWnd }
(AppName, { имя класса, к которому принадлежит создаваемое окно }
'Win_Min', { заголовок окна }
ws_OverlappedWindow, { стиль окна, сейчас - комбинация стилей }
cw_UseDefault, { X - начальная позиция верхнего левого угла, сейчас - значение по умолчанию }
cw_UseDefault, { Y - начальная позиция верхнего левого угла, сейчас - значение по умолчанию }
cw_UseDefault, { Width - начальная ширина окна, сейчас - значение по умолчанию }
cw_UseDefault, { Height - начальная ширина окна, сейчас - значение по умолчанию }
0, { WndParent - родительское окно данного окна }
0, { Menu - меню, используемое данным окном }
HInstance, { Instance - указывает на экземпляр программы. этот параметр указывается, чтобы оконная функция имела доступ к сегменту данных программы }
nil); { Param - определяет дополнительную информацию, посылаемую через сообщение wm_Create }
// Окно создано, его необходимо отбразить на экране.
ShowWindow (Window, CmdShow); { отображает или делает невидимым указанное окно }
UpdateWindow (Window); { указывает прикладной программе, что часть окна нуждается в перерисовке }
// После того, как окно отбражено на экране, управление передаётся циклу обработки сообщений.
// GetMessage извлекает сообщения из очереди и помещается в структуру типа TMsg.
// Для всех сообщений, отличных от wm_Quit (завершение работы программы), эта
// функция возвращает ненулевое значение и цикл продолжает обработку сообщений.
while GetMessage (Message, 0, 0, 0) do { GetMessage возвращает сообщение из очереди GetMessagePos }
begin
// TranslateMessage передает структуру типа TMsg ядру Windows для преобразования сообщений о введенных символах
TranslateMessage (Message); { переводит сообщение виртуальных клавиш в символьное сообщение }
DispatchMessage (Message); { передает сообщение оконной функции указанного окна }
{ после того, как оконная функция обработала сообщение, управление возвращается }
{ в цикл обработки сообщений }
end;// конец цикла обработки сообщений
Halt (Message.wParam); { программа завершается }
End;


// Процедура WinMain - точка входа в программу, которая получает
// управление от ядра Windows.
begin
WinMain;
end.


Опубликовал Kest March 07 2009 20:46:04 · 1 Комментариев · 8377 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
OleXIII June 07 2012 12:25:18
Це все зрозуміло. Проте як управляти таким вікном бо ж запис Form1.hjkhkj:=jkjklj; не канає...))))))
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Blobs [Исходник н...
Degisy Data Acces...
Программа предназ...
ЯЗЫК ПРОГРАММИРОВ...
Пример клиента ФТ...
Delphi Быстрый Ст...
Реализация ЭЦП по...
БД студентов
RxLIB
Панель Наша Кнопка
Защита от спама ...
AlnComponents
Dealer
Голосование для ...
DemoEdit [Исходни...
Работа с матрицами
Bitmap [для кнопок]
Доступа к БД Fire...
Borland C++Builde...
Х. М. Дейтел, П. ...

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97832
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14191
Borland Delphi ... 10290
Turbo Pascal fo... 7373
Калькулятор [Ис... 5984
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
Книга посвящена пр...
наследования ОГП
Стратегия обмена с...
Купить ноутбук
Копирование структур
Если Выне принимае...
Элитная водка Belu...
Реализация одного ...
Шаблоны классов
Модуль CRT. Раблта...
Значение доменного...
Случайные последов...
Применение MPEG-1 ...
CUSTOMERID
Назначение и особе...
Оперативно доступн...
Второе разрешает/з...
Новейший гибкий O...
4. Закрытый ключ в...
Частные клиники Ка...
Элементы управлени...
Создание рекламног...
8.7. Задачи
TCP протокол семей...
Команды INTEL 80x86
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?