69996

СТРУКТУРА WINDOWS - ПРИЛОЖЕНИЙ. ОКОННАЯ ПРОЦЕДУРА. ОБРАБОТКА СООБЩЕНИЙ. ФАЙЛ РЕСУРСОВ

Лабораторная работа

Информатика, кибернетика и программирование

Цель: Ознакомление со структурой Windows-приложений, организацией взаимодействия программ с операционной системой, получение практических навыков по составлению, написанию и отладке простых программ.

Русский

2014-10-13

211 KB

4 чел.

Министерство образования и науки Украины

Харьковский Национальный Университет Радиоэлектроники

Кафедра ЭВМ

Лабораторная работа №1

Тема: «СТРУКТУРА WINDOWS - ПРИЛОЖЕНИЙ. ОКОННАЯ ПРОЦЕДУРА. ОБРАБОТКА СООБЩЕНИЙ. ФАЙЛ РЕСУРСОВ»

Выполнил:                                                                      Проверил:

ст. гр. КИ-08-4                                                                Бугрий А. М.

Кравец Артём Валерьевич

2009

Лабораторная работа №1

Тема: «СТРУКТУРА WINDOWS - ПРИЛОЖЕНИЙ. ОКОННАЯ ПРОЦЕДУРА. ОБРАБОТКА СООБЩЕНИЙ. ФАЙЛ РЕСУРСОВ»

Цель: Ознакомление со структурой Windows-приложений, организацией взаимодействия программ с операционной системой, получение практических навыков по составлению, написанию и отладке простых программ.

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

Задание:

Вариант 6

Написать с использованием функций API программу, создающую оконное приложение Windows.

Стиль класса:  выравнивание клиентской области по горизонтали, перерисовка окна при изменении вертикального размера;

Тип загружаемой иконки:  IDI_INFORMATION.

Тип загружаемого курсора: IDC_NO,

Цвет фона окна: БЕЛЫЙ,

Имя класса окна:  имя студента (на английском языке).

Стиль окна:

а) создается изначально минимизируемое окно;

 б) WS_OVERLAPPEDWINDOW.

Позиция окна: по верхнему краю экрана шириной 400 и высотой 500 точек

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

Программа должна содержать меню, в котором есть пункт "О программе", выбрав который, пользователь получает информацию о создателе программы.

Листинг:

#include <windows.h>

#include "resource.h"

// Глобальные переменные:

HINSTANCE hInst;  // Указатель приложения

LPCTSTR szWindowClass = "QWERTY";

LPCTSTR szTitle = "Лабораторная работа №1";

// Предварительное описание функций 

ATOM MyRegisterClass(HINSTANCE hInstance);

BOOL InitInstance(HINSTANCE, int);

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

// Основная программа 

int APIENTRY WinMain(HINSTANCE hInstance,

                    HINSTANCE hPrevInstance,

                    LPSTR     lpCmdLine,

                    int       nCmdShow)

{

MSG msg;

// Регистрация класса окна 

MyRegisterClass(hInstance);

// Создание окна приложения

if (!InitInstance (hInstance, nCmdShow))

{

 return FALSE;

}

// Цикл обработки сообщений

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

{

  TranslateMessage(&msg);

  DispatchMessage(&msg);

}

return msg.wParam;

}

//  FUNCTION: MyRegisterClass()

//  Регистрирует класс окна 

ATOM MyRegisterClass(HINSTANCE hInstance)

{

WNDCLASSEX wcex;

wcex.cbSize = sizeof(WNDCLASSEX);

wcex.lpfnWndProc = (WNDPROC)WndProc; // оконная процедура

wcex.style   = CS_HREDRAW | CS_VREDRAW; // стиль окна

wcex.cbClsExtra  = 0;      

wcex.cbWndExtra  = 0;

wcex.hInstance  = hInstance;  // указатель приложения

wcex.hIcon   = LoadIcon(NULL, IDI_INFORMATION);  // опре-деление иконки

wcex.hCursor  = LoadCursor(NULL, IDC_NO);    // опреде-ление курсора

wcex.hbrBackground = CreatePatternBrush(LoadBitmap(hInstance, (LPCTSTR) IDB_BITMAP1));//GetSysColorBrush(COLOR_WINDOW);   // ус-тановка фона

wcex.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);  // определение меню

wcex.lpszClassName = "Artem_Sergey"; // имя класса

wcex.hIconSm  = NULL;

return RegisterClassEx(&wcex); // регистрация класса окна

}

// FUNCTION: InitInstance(HANDLE, int)

// Создает окно приложения и сохраняет указатель приложения в переменной hInst

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)

{

  HWND hWnd;

  hInst = hInstance; // сохраняет указатель приложения в переменной hInst

 hWnd=CreateWindow("Artem_Sergey", // имя класса окна

szTitle,   // имя приложения

WS_OVERLAPPEDWINDOW, // стиль окна

 NULL, // положение по Х

NULL,  // положение по Y

400,    // размер по Х

500,    // размер по Y

NULL, // описатель родительского окна

NULL,       // описатель меню окна

hInstance,  // указатель приложения

NULL);     // параметры создания.

  if (!hWnd) // Если окно не создалось, функция возвращает FALSE

  {

     return FALSE;

  }

  ShowWindow(hWnd, nCmdShow);  // Показать окно

  UpdateWindow(hWnd);   // Обновить окно

  return TRUE;    //Успешное завершение функции

}

//  FUNCTION: WndProc(HWND, unsigned, WORD, LONG)

//  Оконная процедура. Принимает и обрабатывает все сообщения, приходящие в приложение

 

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

PAINTSTRUCT ps;

HDC hdc;

RECT rt;

 switch (message)

{

 case WM_CREATE: // Сообщение приходит при создании окна

  break;

 case WM_PAINT:  // Перерисовать окно

  hdc = BeginPaint(hWnd, &ps); // Начать графический вывод

  GetClientRect(hWnd, &rt); // Область окна для рисования

  DrawText(hdc, "ФК МЕТАЛЛИСТ!!!", -1, &rt, DT_SINGLELINE|DT_CENTER | DT_VCENTER);

  EndPaint(hWnd, &ps); // Закончить графический вывод

  break;

       case WM_COMMAND:

  if(LOWORD(wParam) == IDR_MENU1)

              MessageBox(NULL, "Эту программу написали два реальных мужика!:)", "Информация о создателях программы", MB_OK);

 break;

 case WM_DESTROY: // Завершение работы

   PostQuitMessage(0);

  break;

 default:

// Обработка сообщений, которые не обработаны пользователем

  return DefWindowProc(hWnd, message, wParam, lParam);

  }

return 0;

}

Результат:

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


 

А также другие работы, которые могут Вас заинтересовать

23525. Повседневный арабский язык 1.95 MB
  Что касается ритма занятий то было бы оптимально если бы Вы прослушивали каждый день по новому разговору. Предисловие для преподающих арабский язык Дорогие коллеги Данный материал может быть использован для занятий как в группе так и индивидуально. Это господин Али альХаляби. Меня зовут Али альХаляби.
23526. АРАБСКИЙ ЯЗЫК В ДИАЛОГАХ 590 KB
  Разговор 3 В гостинице اَلْحِوَارُ اَلثَالِثُ فِي اَلْفُنْدُقِ Добрый вечер يُورِي: مَسَاءُ اَلْخَيْرِ Добрый вечер سَعِيدْ: مَسَاءُ اَلْخَيْرِ Меня зовут Юрий Кабанов. شُكْراً جَزِيلاً Не за что прощение اَلْعَفْوُ Разговор 6 Телефонный разговор مُكَالَمَةٌ هَاتِفِيَّةٌ Алло أَلُو Да кто на линии на проводе نَعَمْ، مَنْ عَلَى اَلْخَطِّ؟ Я Юрий из Москвы. Добро пожаловать господин Юрий Где ты сейчас أَهْلاً وَسَهْلاً يَا سَيِّدْ يُورِي أَيْنَ أَنْتَ اَلآنَ؟ Я сейчас в городе Фес в гостинице. Основная часть Разговор 1...
23527. Словарь шумеро-аккадского языка 849 KB
  Составление первого подобного словаря на русском языке при отсутствии картотеки картотека составлявшаяся в течение многих лет погибла во время Отечественной войны и блокады Ленинграда оказалось делом исключительно трудоемким и создание его потребовало большого напряжения и большой затраты сил хотя словарь этот включает только не большое число текстов рассчитанных для чтения на первых двух курсах обучения в университете и естественно не может претендовать на полноту. Струве вполне отвечает научным требованиям составления...
23528. Грамматика датского языка 475 KB
  they немое после l n r и перед t s dreng [дрэŋ] мальчик gade [гэ:ðэ] улица holdt [хольт] остановка e [e] [æ] [a] закрытое как в слове меч в конце открытое э перед g открытое a leve [лeвэ] жить spise [сби:сэ] есть jeg [яй] я meget [майэт] очень f [ф] как русское far [фа:] отец g [г] [у] [ŋ] [и] [ ] в начале слова г в середине или конце слова у носовое ŋ как в англ. слове sing после гласной и иногда немое в середине слова give [gi:væ] or [gi] give brag [брa'у] удар synge [сюŋэ] петь sang [саŋ] песня jeg...
23529. ГРАММАТИКА ИСПАНСКОГО ЯЗЫКА 1.03 MB
  1 Имя существительное Nombre sustantivo В испанском языке существительные бывают: собственные Rosa Роза Carmen Кармен 2 нарицательные la mesa стол el árbol дерево одушевленные el hombre мужчина el gato кот неодушевленные el bosque лес la silla стул конкретные la cara лицо el techo потолок абстрактные el tiempo время el aire воздух собирательные la biblioteca библиотека la muchedumbre толпа 1. Существительные которые оканчиваются в единственном числе на согласные z и x меняют их во множественном числе на c:...
23530. Повседневный немецкий язык 1.92 MB
  ru Einleitung Введение Первая часть Herr Klein Guten Tag Hören Sie bitte zu Ich bin Dieter Klein. Ich bin Lehrer. Ich bin Deutscher. Ich spreche Deutsch.
23531. ЗАНИМАТЕЛЬНАЯ ФРАЗЕОЛОГИЯ НЕМЕЦКОГО ЯЗЫКА 1.56 MB
  Немец же говорит: Как стары Вы Wie alt sind Sie Сколько часов Wieviel Uhr ist es Я имею голод. Entschuldigen Sie bitte daß ich so spät anrufe. Sie wollen hier einen Dokumentarfilm drehen 4: Sieben Tage in Moskau‘. Da brauchen wir für sie einen guten Ubersetzer.
23533. НЕМЕЦКО-РУССКИЙ ФРАЗЕОЛОГИЧЕСКИЙ СЛОВАРЬ 181 KB
  Фразеологизмы компоненты которых в качестве лексем являются грамматическими омонимами также разрабатываются в отдельных гнездах причем при вокабуле дается на это указание: ALTE der die ALTE das Указание на часть речи дается также при вокабулах имеющих омографическое начертание в связи с выделением их прописным шрифтом: LEBEN v . Расположение фразеологизмов в словаре а При наличии в компонентном составе одного существительного искать фразеологизм нужно под ним: großer Bahnhof под Bahnhof jn mit anderen Augen ansehen под Augen...