КАК появилась ОС Windows?


Немного истории. В 40-х г.г. ХХ века появились первые ЭВМ с терминалами ввода-вывода, перфокартами. Устройством вывода у них служил принтер (АЦПУ - алфавитно-цифровое печатающее устройство), который выдавал результаты вычислений. Монитора у них не было. В 1950-м году впервые в истории для вывода информации была использована электронно-лучевая трубка (ЭЛТ). В 50-х же годах стали создавать первые грубые образы, было придумано световое перо. Тогда же была придумана одна из первых ОС - MULTICS - прародитель UNIX. Это была многопользовательская система, обеспечивавшая одновременную работу порядка сотни пользователей.
1961-й г. Выпуск первого мини-компьютера. Появилось много ОС, не совместимых с UNIX: System V, BSD. Разработан стандарт POSIX для создания программы, работающей в любой среде. Это был минимальный интерфейс системного вызова, который должны были поддерживать системы UNIX.
В 60-х годах была разработана первая графическая система рисования светового пера. В 1968-м году появилась ЭЛТ позволяющая хранить изображения (Tektronix). Стоила она 15000$. Уже в 70-х г.г. появились дисплеи с растровым сканированием цветного изображения. В 1980-х был глобальный переход от цифровых мониторов CGA/EGA к аналоговым VGA.
нач. 80-х - выход версий Windows 1.0 и 2.0 - по сути, это были графические диспетчеры файлов. Вид у них крайне неприглядный.
10/11/1983 - создание первой графической оболочки Windows.
середина 80-х - начата разработка сетевых операционных систем (СОС), поддерживающих сетевые карты и средства для удалённого входа в другие компьютеры сети.
1987г. - разработана Windows 2.x. Создаются первые приложения под Windows: PageMaker, Excel, Word... В том же году компаниями IBM и Microsoft была разработана система OS/2 с поддержкой виртуальной памяти, графическим интерфейсом пользователя (GUI) и виртуальной машины MS-DOS. В дальнейшем Microsoft переключилась на создания Windows NT. Тогда же была создана ОС MINIX - родитель LINUX.
1988 - начата разработка Windows NT
июль 1990 - вышла Windows 3.0. Начата разработка Windows 95.
1991 - вышла Windows 3.1 для рабочих групп. В этом же году вышла LINUX. В отличие от MINIX, построенной на микроядре, она стала монолитной.
1993 - выход в свет Windows NT. Полностью 32-х разрядная система. Отличалась высокой стабильностью, но требовала больших системных ресурсов.
1995 - вышла Windows 95 - отличавшаяся новым интерфейсом, наличием Plug and play.
1996 - новая версия Window NT, уровень безопасности С2 - одобрен Министреством Обороны США. Автоматическая защита от сбоев.
1997-1998 - Windows 98, Windows 98SE2.
1999 - Windows 2000
2000 - Windows Millenium
2001 - Windows XP
2003 - Windows 2003 Server
2006 - Windows Vista
2008 - Windows 2008 Server


Каждая новая вресия отличается дополнительными средствами взаимодействия с пользователем, поэтому набор API функций с каждой новой версией растёт.

КАКие достоинства у Windows по сравнению с MS-DOS?

По традиции, в книгах по Windows, начиная с 3.1-й версии принято сравнивать эти две операционные системы. Эта традиция не устаревает и поныне, но в данном случае она оправдана, так как мы в самом деле сейчас закончили рассмотрение MS-DOS и переходим к Windows.

1. В отличие от DOS, ОС Windows является многозадачной. То есть появилась возможность выполнения одновременно нескольких программ, тогда как в DOS одновременно можно было только читать документ и печатать его в фоновом режиме. Многозадачность Windows достигается за счёт разделения процессорного времени, поэтому её по-настоящему нельзя назвать и двухзадачностью. Разделение времени стало возможным благодаря использованию процессов, вместо потоков DOS. Итак, в отличие от DOS, Windows использует не потоки, а процессы.
Процесс - выполнение программы. Он начинается с запуском программы и завершается после её закрытия. За счёт разделения времени ЦП, возможно выполнение 2-х и более процессов.
Поток - направление протекания процесса. Отдельные потоки могут выполняться внутри одного процесса. Естественно, каждый процесс имеет свой приоритет и расходуют они время ЦП по-разному.

2. Пользовательский интерфейс. В DOS нет ничего стандартного. Только чёрный экран, а дальше, как Бог на душу положит программисту. В Windows есть стандартные элементы управления: кнопки, флажки, полосы прокрутки, поля ввода. Все программы под Windows используют эти элементы управления, и разработчик избавлен от необходимости разрабатывать свои элементы. Стандартные элементы управления помогают и тем, кто впервые сел за компьютер осваивать новые программы. Научившись работать с Word, вам будет уже проще в Excell и т.д.

3. Аппаратно-независимое программирование. Если в DOS вы захотите работать с "железом": видеоплатой, портами, сетевой платой, принтером, то каждый раз нужно подключать к программе драйвера и с оборудованием других фирм, программа работать не будет. Windows сама настраивается на ваше "железо" и всегда знает какая у вас видеокарта, сетевая карта или принтер. В систему включено большое число драйверов, за счёт чего возможна работа сразу с несколькими однотипными устройствами: принтерами, сканерами и др. Ваша же программа будет работать с другим монитором, другой видеокартой и другим принтером. Это и есть аппаратная независимость.

4. Снято ограничение на оперативную память. Приложения DOS имели ограничение в 640 Кб оперативной памяти. Если они не укладывались в этот лимит, приходилось заимоствовать из XMS, EMS памяти. Windows работает с единым пространством памяти.

5. Универсальная графика. Аппаратная независимость дисплеев, принетров и др. GDI интерфейс - это интерфейс графического устройства. Программируя графику под Windows, мы будем программировать GDI интерфейс. Теперь для программирования вам необходим контекст устройства.
Контекст - драйвер устройства, само устройство и порт связи. Обращение к устройствам в Windows возможно только через функции Windows.

6. Обмен данными между приложениями - встроенная объектная связь (OLE - Object Linking Embedded). Вы можете скопировать рисунок из Word И вставить его в Excel.

7. Совместмость с MS-DOS. Это было не просто, так как MS-DOS использует режим процессора Real, ОЗУ 640 Кб. Эмуляция MS-DOS - это вирутальный DOS со всеми его регистрами и командами. Таким образом опыт нескольких десятилетий не пропал, и привычные программы ещё продолжали существовать. Только следующие их версии уже были под Windows. Также вам не обязательно писать для своей программы пользовательский интерфейс и окна. Консольное приложение - это то, что мы делали в предыдущем разделе. Часто для больших программ Windows пишутся маленькие консольные приложения для работы с файлами, папками и настройки системных ресурсов.

8. Механизм сообщений. В DOS программа управляет данными. В Windows - данные управляют программой. Они называются сообщениями. Как правило сообщения окну передаёт пользователь. Это и щелчки мышью и нажатия клавиш и многое другое. Механизм сообщений - средство совместного управления окном приложения со стороны Windows и самого приложения.

9. Динамически разделяемые ресурсы. Если у вас запущено несколько приложений, все они как бы одновременно взаимодействуют с монитором, видеокартой, мышью, клавиатурой. В DOS это в принципе невозможно. Помните команду getch()? Пока не будет нажата клавиша, ничто с места не сдвинется!

10. Динамические библиотеки. Это гордость Windows. Представьте, что вам не надо включать тела функций в программу? Размер EXE-файла резко сократится. Программа станет очень компактной. Почти вся Windows основана на dll-библиотеках. Они находятся в папке c:\Windows\System\ и каждая новая программа их туда добавляет. Причём одни и те же dll-ки используются разными программами, поэтому вторично код писать не нужно. Пример: в компиляторе Visual C++ вы можете писать приложение с использованием библиотеки классов MFC, которую будете использовать как динмическую, то есть не будете включать в исходный текст программы всю библиотеку классов. Представляете, сколько места EXE файла вы сэкономите? Правда, если у пользователя на компьютере не окажется такой библиотеки, то программа попросту не запустится.

КАК устроена Windows?

Чтобы знать, как лучше управлять машиной, не поможет ли нам некоторое знание об её устройстве? В этом разделе мы познакомимся с тем, как работает операционная система. Будут подробно рассмотрены сообщения, их взаимодействие с Windows. Также мы узнаем, из чего состоит ОС, познакомимся с основными элементами управления (кнопки, флажки, поля ввода и др.) и интерфейсом разработки приложений (API - Application Programming Interface) - основой основ программирования под Windows.

Начнём с конца. Итак API-функции. Наверное, вы уже поняли, что это набор необходимых функций, при помощи которых любое приложение может взаимодействовать с системой.

Существует 2 вида API:

1. Win16 API - функции 16-разрядных ОС, коей была Windows 3.X. Многие из этих функций перешли в Win32 API, у части из них поменялись имена. Но в общем преемственность есть, и программы под Windows 3.X в целом нормально работают и под 95-м и под 98-м (чего нельзя сказать про 2000-й и XP).
2. Win32 API - 32-х разрядный интерфейс. Ввиду увеличения числа разрядов появились новые типы данных, которые мы рассмотрим позже. Они базируются на старых, но позволяют хранить куда большие величины!
API - связующее звено между приложением и ОС. В API содержится более 3000 функций, несколько сот сообщений, макросов (констант). API также включает в себя функции С/С++. Языком С++ API считать нельзя, так как API сам по себе, как язык. И если вы будете использовать API функции в языке Pascal или Delphi, имена API-функций, их аргументы и типы данных не изменятся. В отличие от С/С++, API функции очень зависимы и порой не могут использоваться одна без другой.

Win32 API состоит из 3-х модулей:

1. Kernel (kernel.exe) - ядро ОС. Этот модуль управляет памятью, загрузкой и выполнением программ, отвечает за выполнение системных функций.
2. GDI (gdi.exe) - графика. Этот модуль может вызывать функции ядра.
3. User (user.exe) - взаимодействие с аппаратурой через драйверы, выполняя функции ROM-BIOS.
При обращении к функции DOS в режиме эмуляции, вызов DOS заменяется на соответствующую функцию Windows.

Ещё несколько основополагающих столпов, на которых зиждется Windows.

Управление графическим выводом.
В отличие от MS-DOS, приложение использует в качестве устройства вывода скорее окно, чем экран. В каждый момент времени только 1 окну соответствует некоторое устройство вывода.

Графические объекты.
1. Битовые массивы (битовые карты) - прямоугольные массивы цветных точек, в которых хранятся некоторые растровые изображения. Рисунки на кнопках в панели управления, небольшие логотипы, знаки вопроса, индикация копирования-перемещения и удаления, всё это битовые образы (bitmap).
2. Перья (pen) - в DOS функция setlinestyle задавала тип линии - пунктирная, штрих-пунктирная, сплошная и др. Тип линии в Windows называется пером. И если мы захотим изменить тип линии, мы должны устновить соответсвующее перо (pen)
3. Кисти (brush) - задают тип заливки (цвет и стиль). Совсем, как setfillstyle. Вы можете заливать свою фигуру сплошной краской, а можете задать её заполнение в клеточку или наклоннную полоску.
4. Шрифты (fonts) - задают параметры шрифта - его высоту, ширину, тип и многое многое другое, вплоть до расстояния между строчками и между символами, угол наклона, высоту прописных и сточных букв и ещё, и ещё, и ещё... Как вы можете догадаться, возможностей у шрифтов в Windows намного больше, чем в DOS. Большой простор и для вывода русских шрифтов.
5.Области (regions) - области окна, ограниченные какой-либо фигурой. Предназанчены для заливки, выделения, или инверсии. Кроме того, они определяют положение курсора.
6. Логические палитры (logical palettes) - содержат набор цветов, используемый приложением.
7. Контуры (paths) - заполнение или выделение контура различных фигур.

Аппаратно-независимый ввод-вывод.
Особенность Win32 API - независимость графического вывода от устройства. Независимость обеспечена применением DLL.
GDI.dll - графический интерфейс устройства
VGA.dll - драйвер устройства вывода
EPSON.dll - драйвер принтера
Перед самым выводом, приложение запрашивает Windows о загрузке соответствующего драйвера. Как только он загружается, происходит настройка цвета линий, ширина кисти, шрифт и др. Все эти параметры хранятся в структуре "контекст устройства".

Контекст устройства.
- структура, определяющая набор графических объектов и связанных с ними аттрибутов и графических режимов, которые воздействуют на вывод. Приложение обращается к контексту только через Win32 API.

Различают:
1. Контекст класса
2. Общий контекст
3. Частный контекст.
В зависимости от поставленных целей, вы выбираете имена функций, с помощью которых вы обращаетесь к контексту. Так вы выбираете контекст.

Контекст класса - поддерживается только для совместимости с Win16 API.
Общий контекст - применяется в программах, время от времени использующих перерисовку (не часто). Для получения общего контекста применяются API функции: GetDC, GetDCEx.
Частный контекст - так же, как и контекст класса применяется в приложениях с частой перерисовкой окна. Сохраняет любые изменения, даже после завершения рисования и вызова EndPaint и ReleaseDС. Этот контекст не является частью главного окна и удаляется только после закрытия последнего окна программы. Вызывается он BeginPaint, в структуре WNDCLASS, он носит значение CS_OWNDC.

Принтер

Для принтера и графопостроителя контекст один. Функция CreateDC используется для создания контекста принтера. При этом, задаются параметры: драйвер, имя. После завершения печати, вызывается DeleteDC. Использовать ReleaseDC нельзя.

Объект в памяти

Если вы пишете игру, то ваш герой будет меняться время от времени - перерисовываться, перемещаться. Чтобы устранить его мерцание, мы будем копировать его битовый образ в память. В этом нам поможет функция SelectObject.

Информационный контекст

Предназначен для восстановления изначальных параметров устройства. Для его создания вызывается CreateDC, GetCurrentObject, GetObject.

Графический режим

Он состоит из:
1. Режима настройки фона
2. Режима отображения
3. Режим масштабирования - откуда берут своё начало начальные координаты и в какую сторону увеличиваются: вверх или вниз. Это удобно для построения графиков функций, так как не надо заниматься пересчётом.
4. Режим заливки и контуров - текущие кисти и перья
5. Режим сжатия - определяет каким образом происходит преобразование растровых изображений при их увеличении (уменьшении).

Цвета

Любой цвет можно получить из трёх основных цветов: красного (RED), зелёного (GREEN) и синего (BLUE). Такое сочетание связано с особеноостями построения мониторов, в которых есть три луча (R,G,B). Любой цвет кодируется значениями красного, зелёного и синего от 0 до 255 таким образом: RGB(255,0,184); - типичное объявление цвета.

Шрифты

1. Растровые - хранят битовые образы для каждого символа.
2. Векторные - хранят для каждого символа коордианты начального и конечного положения отрезков, из которых состоит символ. Качество вывода не зависит от устройства вывода, как у растровых. Тем не менее, время на их вывод затрачивается больше.
3. Шрифты TrueType. Содержат информацию о линиях и командах изгиба, а также настроечную информацию (hints). Скорость отображения средняя.

Клавиатура

Нажатие клавиш воспринимается окном, как сообщения. Если вы хотите обрабатывать клавиши, вы должны включить в цикл обработки сообщений приложения, специальную ветвь - обработчик сообщений от клавиатуры, в котором с помощью структуры switch/case, определите код нажатой клавиши и соответствующую процедуру. Сообщения от клавиатуры различны. Например, вы можете отслеживать нажатие клавиши, а можете отслеживать её отпускание. Это разные виды сообщений: WM_KEDOWN, WM_KEYUP. Если вы хотите обрабатывать символьные сообщения, то это уже сообщение WM_CHAR.

Мышь

Для мыши вы можете довольно легко задать тип курсора - как стандартный (знак вопроса, песочные часы, стрелка), так и свой, который нарисуете и сохраните в файле **.cur. Windows даёт нам возможность обрабатывать нажатие всех трёх кнопок, а также вращение колёсика. Кроме того, обрабатывать двойное нажатие стало не в пример проще. Сообщения от мыши могут быть например такие: WM_RBUTTONDOWN (нажатие правой кнопки), WM_MBUTTONUP (отпускание средней кнопки), WM_LBUTTONDBLCLK (двойной щелчок левой кнопкой)... Перемещение мыши - WM_MOUSEMOVE. С помощью последнего сообщения вы можете строить приложения с технологией "перетаскивания" (Drag-n-Drop), широко используемые в играх и в САПР.

КАК сообщения взаимодействуют с окном?

Механизм сообщений.
Вкратце мы уже затронули сообщения. Сообщение окну передаёт пользователь или операционная система. Все внешние по отношению к окну события кодируются и отправляются в виде сообщений в очередь приложения. На картинке вы сможете наблюдать связь между сообщениями и драйверами:

Нажатие клавиши клавиатуры Нажатие клавиши взаимодействует с драйвером keyboard.drv Систеная очередь распределяет сообщения по приложениям Сообщения поступающие на приложения обрабатываются в порядке очереди Цикл switch/case обрабатывает все сообщения, которые необходимо обработать Функция окна обеспечивает взаимодействие окна с циклом Окно реагирует функцией вывода текста TextOut()


Системная очередь одна. Сообщения, попадающие в системную очередь распределяются по приложениям. Модуль user.exe извлекает сообщение из системной очереди и перенаправляет его в очередь конкретного приложения. Обработку очереди приложения, выполняет непосредственно приложение. Для этого существует цикл обработки сообщений, который извлекает сообщение из очереди приложения и направляет его в соответствующую функцию окна.

КАК Windows узнаёт какому приложению приходит сообщение с клавиатуры или мыши? Несмотря на многозадачность Windows, ясно, что пользователь в один момент времени может работать только с одной программой. Принято говорить, что приложение, в которое попадают сообщения от клавиатуры и мыши имеет фокус ввода.

КАКие ещё бывают типы данных?

Мы рассмотрели в разделе DOS достаточно типов данных: int, char, float, double, short, char, long, char*... Все они годятся и для Windows. Но 32-разрядный компилятор вносит свои директивы и поправки. Так как теперь мы можем хранить данные гораздо большим объёмом, появились новые типы, которые широко используются в Windows-приложениях:

Типы данных Windows:

КАК пользоваться этой таблицей? В первом столбце идёт название типа, во втором его краткое описание - разрядность и где применяется, третий столбец содержит эквивалент нового типа с помощью тех старых типов данных, которые мы изучили в разделе DOS. Столбец "Префикс" содержит первую букву индентификатора, соответствующую каждому типу данных. По венгерской нотации, первая буква в имени переменной должна обозначать её тип данных.

Название типа

Описание

Эквивалент

Префикс

BOOL
Булевский тип. Принимает два значения true (истино) или false (ложно)
int
b
BSTR
32-б. указататель на символ
BYTE
8-б. беззнаковое целое (может быть только положительным)
unsigned char
by
COLOREF
32-б. значения цвета
DWORD
32 б. беззнаковое целое или адрес
unsigned long
dw
LONG
32 б. целое со знаком (может быть отрицательным)
long
l
LPARAM
32 б. значение параметра
NPSTR
указатель на текстовую строку
(near )(char *)
LPCSTR
32-б. указатель на константную строку
const char *
LPSTR
32-б. указатель на массив символов
char far*
lp
LPCTSTR
32-б. указатель на постоянную строку, переносимую в Unicode
lp
LPTSTR
32-б. указатель на строку, переносимую в Unicode
lp
LPVOID
32-б. указатель на неопределённый тип данных
LRESULT
32-б. значение, возвращаемое из оконной процедуры
UINT
32-б. беззнаковое целое
unsigned int
u
WNDPROC
32-б. указатель на оконную процедуру
WORD
16-б. беззнаковое целое
unsigned int
w
WPARAM
посылочный параметр в оконную процедуру
POSITION
32-б. беззнаковое целое для обозначения позиции элемента
LPCRECT
32б. указатель на немодифицированную структуру RECT
HINSTANCE
32-б. беззнаковое целое для идентификации дескриптора экземпляра приложения
unsigned int
h
HANDLE
32-разрядное целое-дескрипитор
unsigned int
h
HWND
32-разрядное целое, идентификатор объекта ""окно
FARPROC
32-разрядный указатель на функцию
MSG
строка, содержащая параметры сообщения
lp
WNDCLASS
структура, определяющая класс окна
wc
PAINTSTRUCT
структура для подготовки графического вывода в окно

Как вы видите, число типов значительно увеличилось. И дело не в том, что изобрели новые типы данных. Просто типы Windows позволяют уже по названию судить об их применении. Например записывая вместо HANDLE unsigned int, мы не сразу догадаемся, что речь идёт об дескрипторе, а не просто о какой-то переменной. С той же целью применяются и префиксы, хотя на начинающего программиста, они, пожалуй, произведут удручающее впечатление. Только практика работы с ними приучит вас применять их и не чураться корявых названий типа lpszCmdLine и nCmdShow.

Венгерская нотация распространилась и на привычные нам типы. Вот, как обозначаются префиксы для уже известных нам типов:

Тип данных
Значение
Префикс
int
целое число
i
short int
целое число
n
указатель
любой указатель
p
указатель на функцию
содержит адрес функции
pfn
указатель на структуру
адрес структуры
pst
указатель на строку, заканчивающуюся нулевым байтом
psz
указатель на тип void
pv
символ
char
c
строка
char *
s
строка, заканчивающаяся ненулевым байтом
sz
беззнаковое число
unsigned
u
тип void
void *
v
short int
как координата по х
х
short int
как координата по у
у
функция
любая функция
fn


КАК работает окно?

Окно - прямоугольная область экрана, которую занимает каждая программа Windows. Главное окно - окно верхнего уровня, которое может порождать дочерние окна. Окно - самостоятельно существующий объект, параметры которого описываются классом окна (WNDCLASS), а поведение функцией окна (WndProc). Общение с пользователем идёт через окно, поэтому даже минимальная программа Windows должна использовать окно. Без него ни одна функция API работать не будет. Вот почему мы не сможем использовать API функции графики скажем в DOS.

Функция WinMain() - то же, что main() в обычном СИ. Это главная функция приложения под Windows. Без неё оно работать не будет. Она отвечает в частности за создание окна, передавая управление в начальный момент загрузки.
Итак, WinMain() отвечает за:
1. Создание главного окна и дочерних окон
2. Запуск цикла обработки сообщений
3. Завершение работы приложения при извлечении сообщения WM_QUIT.

Вот пример этой функции:
int WINAPI WinMain(HANDLE hInstance, HANDLE hPreInst, LPSTR lpszCmdLine, int nCmdShow);

Поясним аргументы:
hInstance - идентификатор, определяющий уникальный номер запущенного приложения
hPreInst - идентификатор, проверяющий запускались ли ранее копии этого приложения. Можно поставить проверку:

if(!hPreInst)
return 0;

Тогда второй экземпляр данного приложения запустить уже не удастся.

lpszCmdLine - аргумент командной строки. Обычно, если вы не работаете с командной строкой, равен нулю.
nCmdShow - способ изображения окна. Например: SW_SHOWNORMAL - окно стандартных размеров, SW_SHOWMAXIMIZED - развёрнутое на весь экран...

Если окна ведут себя одинаково, они принадлежат к одному и тому же классу окна, так как используют одну и ту же структуру данных. Это существенно экономит память. Любое количество окон использует одну и ту же функцию и параметры. Класс окна вызывается функцией CreateWindow().

Окна бывают:
1. Перекрывающеися (overlapped)
2. Всплывающие или вспомогательные (popup)
3. Дочерние (child)
Окна задаются и описываются стилями (WS_OVERLAPPEDWINDOW, WS_POPUP, WS_MINIMIZE...), которые служат аргментами CreateWindow.

Перекрывающиеся - основной тип окон. Главное окно имеет как раз этот тип. Стиль такого окна: WS_OVERLAPPEDWINDOW.
Всплывающие окна - отображают информацию во время краткого промежутка времени - системные сообщения, вопросы, информацию. Даже если имеют родительское, отображаются поверх всех окон. Стиль WS_POPUP
Дочерние - к ним относятся все элементы управления, окна многодокументного интерфейса. Не отображаются вне родителя и без него. При перемещении родителя, перемещаются вместе с ним. Никогда не бывают активными.


КАКие в Windows существуют элементы управления?

Наиболее часто используемые элементы управления:
1. Статический элемент (метка, Label, Static text) - служит для вывода текстовой информации. В любой момент текст в нём можно изменить.
2. Кнопки (Push Button, Bit Button, Submit). Предназначены для немедленного предприятия некоторого действия.


3. Переключатели. Делают активным один из нескольких элементов управления по принципу ИЛИ. Или 1-й или 2-й или 3-й... Вы можете выбрать всегда только один элемент. Его ещё называют радио-кнопкой (radio button), так на радио вы можете настроить всегда только одну станцию.
Оля
Саша
Лена


4. Флажки. Работают по принципу И. 1-й и 2-й и 3-й. Допускается множественный выбор, как например в текстовом редакторе: Жирный, Курсивный, Подчёркнутый шрифт.
Жирный (B)
Курсивный (I)
Подчёркнутый (U)


5. Списки (List box)- в них перечисляются строки символов, например, имена файлов. Список может быть прокручиваемым. Может поддерживать автосортировку.
6. Окно редактирования (Memo, Text field)- небольшое текстовое поле, в которое вы можете ввести какой-то текст. Когда заканчивается первая строка, вы автоматически переходите на следующую:


7. Полосы прокрутки. Окно может иметь, а может и не иметь вертикальную (WS_VSCROLL) и горизонтальную (WS_HSCROLL) полосы прокрутки. Они подключаются в функции CreateWindow, как и полагается дочерним окнам.
8. Поля ввода - ввод текстовой и числовой информации. Данные принятые окном ввода всегда имеют тип строка или тип целое. Для получения числа, их необходимо конвертировать функциями типа atof и др.
Введите что-нибудь:



С остальными элементами вы познакомитесь позже. В данной главе вы познакомились с основой-основ механизма функционирования Windows. Годы идут. Меняются версии. Плодятся API функции. А основы-основ остаются незыблемы. В следующей части мы подробно рассмотрим работу API-функций, научимся строить приложения под Windows разной степени сложности. Изучим графику Windows, все детали интерфейса пользователя (кнопки, флажки, радиокнопки, полосы прокрутки, меню, панель управления, окна). Это позволит нам написать несколько самостоятельных программ, которые вы сможете использовать в реальной жизни. Одно из них будет полноценной красочной игрой. Знание API-функций поможет вам в четвёртой части и пятой части этой книги, когда мы будем изучать библиотеки MFC и VCL.


Вперёд