Навигация
Главная
Поиск
Форум
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
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Модуль Forms 65535
ТЕХНОЛОГИИ ДОСТ... 64667
Имитационное мо... 58926
Реклама
Сейчас на сайте
Гостей: 6
На сайте нет зарегистрированных пользователей

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

База данных студентов на Delphi + Microsoft SQL Server
Расчет обратной матрицы на Delphi + Пояснительная записка
Файл записей с выводом обратного заголовка на Turbo Pascal

Реклама



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

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


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

Случайные загрузки
Pass [Исходник на...
Разработка Web-пр...
StartMark
GPSS World Studen...
AlignEdit
Самоучитель PHP 4
SODA [Исходник на...
Создание меню на ...
Основы программир...
Delphi 6 программ...
Borland C++Builde...
iChat v.7.0 Final...
Borland Delphi 6....
Песочные часы
Учебник для продв...
Abbrevia
PHP: Полезные приемы
около 291 статьи ...
БД студентов
PRNDbgrid

Топ загрузок
Приложение Клие... 100501
Delphi 7 Enterp... 89060
Converter AMR<-... 20086
GPSS World Stud... 14194
Borland C++Buil... 12390
Borland Delphi ... 8801
Turbo Pascal fo... 7067
Калькулятор [Ис... 5025
Visual Studio 2... 5011
FreeSMS v1.3.1 3550
Случайные статьи
Итерация - пройтис...
Внешняя сортировка...
Управление связанн...
Преимущества SMOSe...
Выполнение функции...
чтения смарт-карт,...
Язык С: перестановки
свой технический п...
Управление коммент...
Управляемая инициа...
Оптимизация програ...
Создание Meta-тегов
4.3. Общие случа...
Карта CLEAR
HTPC
Контроль состава а...
Выделение фрагмент...
Файл AndroidManife...
Использование VLAN
Оператор цикла repeat
Настройте коммутир...
Произвольные фигуры
Концепция с исполь...
Оглавление
Перемещение объект...
Статистика



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


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