Навигация
Главная
Поиск
Форум
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
Создание отчето... 64987
Модуль Forms 64771
Пример работы с... 63107
ТЕХНОЛОГИИ ДОСТ... 61489
Имитационное мо... 57322
Реклама
Сейчас на сайте
Гостей: 7
На сайте нет зарегистрированных пользователей

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

Диплом RSA, ЭЦП, сертификаты, шифрование на C#
Моделирование процесса обработки заданий на вычислительном центре на GP...
Создание последовательности окон и передвижение окон по экрану на Turbo ...

Реклама



Подписывайся на 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 Комментариев · 7417 Прочтений · Для печати

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


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

Случайные загрузки
TDBF
JBlabel3D
БД студентов
ADVstatusbar
Программирование ...
Задача о 8ми ладьях
Архив значков
Панель Наша Кнопка
C# в кратком изло...
PBFoldder
Размещение элемен...
Таймер и секундомер
SMLPack v1.0
iChat v.7.0 Final...
Защита от спама ...
Панель случайной ...
Платформа програм...
SynEdit
Assembler. Учебни...
Win-Prolog 3.618

Топ загрузок
Приложение Клие... 100463
Delphi 7 Enterp... 86579
Converter AMR<-... 20076
GPSS World Stud... 12621
Borland C++Buil... 11744
Borland Delphi ... 8552
Turbo Pascal fo... 7037
Visual Studio 2... 4998
Калькулятор [Ис... 4758
FreeSMS v1.3.1 3541
Случайные статьи
Как расколоть орешек
Так, пользователь ...
Как переносить уче...
File access denied
Что такое Free Pas...
Понятие клонирова...
Манипулирование би...
Пример 1. Формулир...
Этап 1 - исключени...
Обеспечение обратн...
Механизм сигналов ...
Директивы компилятора
Продолжительность ...
Добавление свободн...
Данные инфографики...
Правила описания т...
Кроссбраузерная по...
Circular unit refe...
Служба лицензирова...
Если хотя бы одно ...
Более подробное об...
Label already defined
Создание приложения
Формирование струк...
Глава 16. Страт...
Статистика



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


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