Навигация
Главная
Поиск
Форум
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
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Содержание сайт... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Модуль Forms 62798
Создание отчето... 62779
ТЕХНОЛОГИИ ДОСТ... 59322
Пример работы с... 58045
Имитационное мо... 54708
Реклама
Сейчас на сайте
Гостей: 11
На сайте нет зарегистрированных пользователей

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

Расчет обратной матрицы на Delphi + Пояснительная записка
Моделирование работы класса персональных компьютеров на GPSS + Отчет + Б...
Моделирование системы управления качеством производственного процесса на...

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании
Минимальная программа
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 23:46:04 · 1 Комментариев · 7277 Прочтений · Для печати

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


Комментарии
OleXIII June 07 2012 16: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...
Шаблон для новост...

Случайные загрузки
XPcontrol
Х. М. Дейтел, П. ...
BDEPack
LaserTank [Исходн...
Delphi World 6.0
Halcyon
Web Регистрация
Run
Искусство програм...
Delphi 2005 для W...
Delphix Sample [И...
DeleteEdit
Размещение элемен...
Delphi 7 Enterpri...
Просмотр коммент...
Экранная лупа
Мод "проверочный ...
Image Browser [Ис...
Scrrlcaptoin
Черный круг двига...

Топ загрузок
Приложение Клие... 100421
Delphi 7 Enterp... 84916
Converter AMR<-... 20061
GPSS World Stud... 11952
Borland C++Buil... 11404
Borland Delphi ... 8368
Turbo Pascal fo... 7007
Visual Studio 2... 4984
Калькулятор [Ис... 4622
FreeSMS v1.3.1 3529
Случайные статьи
Использование аксе...
Рабочий стол Windo...
lucernepublishing
Определить суммы э...
Для каких адресов ...
Имитационное модел...
Маршрутизатор обра...
Structure too large
SmartApe защищён о...
Событие OnDragDrop
Основы WinApi
Включение датчика NFC
Управление агрегир...
Вычисление значени...
Операция V0P_MAP
Концепция правильн...
9.6. Дополнительна...
Stern travel 20
Интерпретация симв...
Функции
Проводите простой ...
Строки - индикатор...
Два основных подхо...
16.0.
Error in Initial c...
Статистика



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


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