Программирование устройств в Windows: Методические указания к выполнению практических и лабораторных работ по курсу “Операционные системы, среды и оболочки”, страница 11

WndClass.lpszMenuName := nil;

WndClass.lpszClassName := AppName;

Result := RegisterClass(WndClass) <> 0;

end;

function WinCreate: HWnd;

var

hWindow: HWnd;

begin

hWindow := CreateWindow(AppName, 'Hello, Windows!!good !!' ,

ws_OverlappedWindow, cw_UseDefault, cw_UseDefault,

cw_UseDefault, cw_UseDefault, 0, 0, HInstance, nil);

if hWindow <> 0 then begin

ShowWindow(hWindow, CmdShow);

UpdateWindow(hWindow);

end;

Result := hWindow;

end;

var

AMessage: TMsg;

hWindow: HWnd;

begin

if not WinRegister then begin

MessageBox(0, '?aaeno?aoey i?a?aaia', nil, mb_Ok);

Exit;

end;

hWindow := WinCreate;

if hWindow = 0 then begin

MessageBox(0, 'Ia oaaeinu nicaaou ieii', nil, mb_Ok);

Exit;

end;

while GetMessage(AMessage, 0, 0, 0) do begin

TranslateMessage(AMessage);

DispatchMessage(AMessage);

end;

Halt(AMessage.wParam);

end.

ЗАДАНИЕ

1)  Создайте программу, появляющуюся в максимизированном состоянии.

2)  Создайте программу, использующую курсор в виде песочных часов, обычно говорящих о выполнении длительного процесса.

3)  Создайте программу со светло-серым фоном окна.

4)  Создайте программу, отображающую ваше имя в заголовке основного окна.

5)  Воспользуйтесь функцией SetTextColor и макросом RGB, чтобы напечатать слово "красный" красным, "зеленый" — зеленым, а "синий" — синим цветом.

6)  Напишите программу, печатающую ваше имя и адрес в левом верхнем углу окна.

7)  Напишите программу, печатающую ваше имя и адрес так, что они всегда остаются центрированными посередине окна, даже если его размер меняется.

8)  Напишите программу, которая использует SetTextAlign и TextOut.

9)  Напишите программу нажатия системных клавиш.

10) Напишите программу передвижения мыши.

11) Напишите программу определения нажатия кнопок мыши.

12) Напишите программу определения двойного нажатия кнопок мыши.

СОДЕРЖАНИЕ ОТЧЕТА

Отчет должен содержать следующую информацию:

1)  распечатанную программу;

2)  продемонстрировать результат работы программы;

3)  объяснить структуру программы.

КОНТРОЛЬНЫЕ ВОПРОСЫ

1)  Что такое WNDCLASS.

2)  Какова цель функции Register.

3)  Какова цель функции Create.

4)  Какова разница между ShowWindow и UpdateWindow.

5)  Какова цель WndProc.

6)  Какова цель цикла опроса сообщений.

7)  Когда и как часто  посылаются сообщенияWM_CREATE.

8)  В чем разливе функций BeginPaint и GetDC.

9)  Назовите две функции, которые можно использовать для вывода текста.

10)  Слово "устройство" применялось в основном для обозначения видеоэкрана или видеокарты. Какие другие виды устройств могут быть важны при ответе на сообщения WM_PAINT.

11)  Сообщения — это в действительности просто константы. Как определить значение константы, ассоциированной с сообщениями WM_CREATE.

12)  Каковы основные шаги при написании новой Windows-программы, всегда ли необходимо вводить новую программу "с нуля".

13)  Опишите несколько различий между традиционной DOS-программой и ориентированной на события программой Windows.

14)  Назовите два сообщения, посылаемых функции KeyMouse_OnLButtonDown.

15)  Что представляют собой константы VK.

16)  Что такое стиль CS_DBLCLKS и когда он используется?

17)  Какой цвет получается в результате обнуления всех трех параметров RGB.

18)  Как по-другому называется системная клавиша.

19)  Куда переместится фокус, когда вы нажмете системную клавишу при программировании KeyMouse.

20)  Какая функция, на ваш взгляд, вызывается чаще: KeyMouse_OnKey или КeуMouse_OnChar.

21)  Что произойдет, если вы забудете вызвать ReleaseDC после GetDC в функции KeyMouse_OnMouseMove.


СПИСОК ЛИТЕРАТУРЫ

1.  Питерзолд. Прораммирование в  Windows. –М.:

2.  Рихтер Джеффри. Windows для профессионалов (программирование в Win 32 API для Windows NT 3.5 и Windows 95).- М.:«Русская Редакция», 1995.

3.  Карверт Чарльз. DELPHI 2. Энциклопедия пользователя. -Киев.: НИПФ «ДиаСофт Лтд», 1996.