Програма HelloWin

Міністерство освіти і науки України

Житомирський державний технологічний університет

Лабораторна робота №4

з курсу "Системне програмування"

на тему: "Програма HelloWin"

м. Житомир

2011 р.

Содержание

1. Завдання для виконання

2. Текст програми

3. Завдання до лабораторної

Висновок

1. Завдання для виконання

    Розібрати текст програми hellowin.c.

    Вивчити матеріал викладений у файлі допомоги.

    Створити аналогічну програму, яка друкує в вікно:

    Змінні середовища програми (Envayroment)

    Шлях - звідки була запушена на виконання програма

2. Текст програми

/*-------------------------------------------------------------------------------

HELLOWIN.C -- Displays "Hello, Windows 95!" in client area

(c) Charles Petzold, 1996

-------------------------------------------------------------------------------*/

#include <windows.h>

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

PSTR szCmdLine, int iCmdShow)

{

static char szAppName[] = "HelloWin" ;

HWND hwnd ;

MSG msg ;

WNDCLASSEX wndclass ;

wndclass.cbSize = sizeof (wndclass) ;

wndclass.style = CS_HREDRAW | CS_VREDRAW ;

wndclass.lpfnWndProc = WndProc ;

wndclass.cbClsExtra = 0 ;

wndclass.cbWndExtra = 0 ;

wndclass.hInstance = hInstance ;

wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;

wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;

wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);

wndclass.lpszMenuName = NULL ;

wndclass.lpszClassName = szAppName ;

wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION) ;

RegisterClassEx (&wndclass) ;

hwnd = CreateWindow (szAppName, // window class name

"The Hello Program",// window caption

WS_OVERLAPPEDWINDOW, // window style

CW_USEDEFAULT, // initial x position

CW_USEDEFAULT, // initial y position

CW_USEDEFAULT, // initial x size

CW_USEDEFAULT, // initial y size

NULL, // parent window handle

NULL, // window menu handle

hInstance, // program instance handle

NULL) ; // creation parameters

ShowWindow (hwnd, iCmdShow) ;

UpdateWindow (hwnd) ;

while (GetMessage (&msg, NULL, 0, 0))

{

TranslateMessage (&msg) ;

DispatchMessage (&msg) ;

}

return msg.wParam ;

}

LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)

{

HDC hdc ;

PAINTSTRUCT ps ;

RECT rect ;

switch (iMsg)

{

case WM_CREATE :

PlaySound ("hellowin.wav", NULL, SND_FILENAME | SND_ASYNC) ;

return 0 ;

case WM_PAINT :

hdc = BeginPaint (hwnd, &ps) ;

GetClientRect (hwnd, &rect) ;

DrawText (hdc, "Hello, Windows 95!", -1, &rect,

DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;

EndPaint (hwnd, &ps) ;

return 0 ;

case WM_DESTROY :

PostQuitMessage (0) ;

return 0 ;

}

return DefWindowProc (hwnd, iMsg, wParam, lParam) ;

}

3. Завдання до лабораторної

Створити аналогічну програму, яка друкує в вікно:

Змінні середовища програми (Envayroment)

Шлях - звідки була запушена на виконання програма

Функція DrawText() – "малює" текст. Оскільки ця функція малює, то першим параметром має бути описувач контексту пристрою, який повертає функція BeginPaint.

Другим параметром є текст який малює функція. Саме сюди ми і заносимо текст який варто надрукувати.

Третій параметр встановлений -1 вказує на те, що рядок тексту завершується нульовим символом.

Четвертий параметр – розмір тексту.

Останнім параметром є набір прапорців, які вказують на розташування тексту.

Отже, щоб змінити написи у вікні варто змінити(додати) у програмі функцію:

DrawText (hdc, "ТЕКСТ", -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;

Висновок

програма файл вікно звуковий

Отже, на даній лабораторній роботі було розібрано роботу програми, яка демонструє основні принципи створення вікна у OS Windows. У ході виконання роботи було розібрано використання функцій для створення вікна, відображення у вікні тексту, та відтворення звукових файлів.

Під час модифікації програмного коду було здобуто практичні навики створення вікон, відображення тексту, відтворення звуку.