Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
WinAPI.docx
Скачиваний:
49
Добавлен:
16.12.2018
Размер:
3.43 Mб
Скачать

2.2 Ваша первая программа для Windows

В своем первом классическом труде The C Programming Language (2d ed., Prentice Hall, 1988), Брайан Керниган и Деннис Ритчи начали изучение С с этой, важной для нас, программы, которую они назвали "Hello, world":

#include <stdio.h>

main()

{

printf("Hello, world\n");

}

В этой главе будет показана аналогичная программа, написанная для Microsoft Windows. Программа называется HELLOWIN, она создает окно, в котором выводится строка "Hello, Windows " и воспроизводится звуковой файл с голосом, декламирующим те же слова.

Чтобы вас не хватил удар при виде программы HELLOWIN, предупреждаем заранее, что в тексте программы HELLOWIN.С свыше 80 строк. Большая часть этих 80 строк является надстройкой. Похожая надстройка будет почти в каждой программе для Windows.

Вместо того, чтобы спрашивать, почему программа "Hello, Windows!" столь длинная и сложная, давайте зададимся вопросом о том, почему привычная программа "Hello, world" столь короткая и простая.

2.2.1 Что в этой программе неправильно?

Модель вывода строки в программе "Hello, world" и в других традиционных программах С — это устаревший придаток аппарата, известного как телетайп. Телетайп напоминает пишущую машинку с непрерывной подачей бумаги. Прошло не слишком много времени, с тех пор как программисты сидели за телетайпом и набирали команды, которые воспроизводились на бумаге. Компьютер отзывался, печатая свои ответы на той же бумаге.

В начале, после появления терминалов мэйнфрэймов и персональных компьютеров, принцип телетайпа распространился и на экран дисплея. Экран дисплея стал "стеклянным телетайпом", который просто прокручивался, если текст доходил до нижней части экрана.

Как может традиционная программа "Hello, world" выводить свой текст на экран без получения операционной системой информации о конкретном устройстве вывода, на котором этот текст должен появиться? Очевидно, что дисплей — единственное устройство вывода, используемое таким образом, как будто оно является телетайпом.

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

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

Давайте посмотрим, что появится на экране, если бы вы захотели одновременно выполнить несколько программ "Hello, world". Полная неразбериха! Копии программ стали бы мешать друг другу. В заложенном в основу телетайпа принципе нет ничего, что разделяло бы несколько работающих параллельно программ.

Следует также отметить, что вы видите слова "Hello, world" даже после того, как программа завершилась. Вместо того, чтобы их стереть, программа оставляет на экране пережиток своего существования.

Программа "Hello, world" выглядит так просто потому, что написана в простое время, для простых компьютеров и простых устройств вывода информации. В мире современных компьютеров произошли значительные изменения, и эти изменения диктуют создателям программного обеспечения новые правила игры.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]