Разработка графического интерфейса приложения "Шрифт"
Сценарий работы приложения "Шрифт". Внешнее и внутреннее представление элементов. Описание процедур и функций. Описание процедур и функций. Сценарий взаимодействия с пользователем. Минимальные системные требования. Тестирование программной системы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 14.01.2018 |
Размер файла | 988,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего образования
«Рязанский Государственный Радиотехнический Университет»
Кафедра вычислительной и прикладной математики
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
К курсовому проекту по дисциплине:
«Графические интерфейсы информационных систем»
на тему
«разработка графического интерфейса приложения “Шрифт”»
Выполнили:
Ст. гр. 3040 Иванова И.В.
Проверила:
Доцент кафедры ВПМ, к.т.н.
Маркова В.В.
Рязань, 2017г.
ЗАДАНИЕ
на выполнение курсового проекта по дисциплине
«Графические интерфейсы»
Ст. гр. 3040 Иванова И.В.
Тема проекта
Разработка графического интерфейса приложения
«Шрифт»
(название предметной области)
Обязательные разделы пояснительной записки
Задание
Содержание
Постановка задачи
Описание проектного решения
1) разработка сценария работы приложения в табличной форме (идентификатор формы, назначение формы, элементы управления, содержащиеся на форме, взаимодействие с другими формами);
2) внешнее и внутреннее представление элементов управления (идентификатор элемента, визуальное представление, возможные значения);
3) структура и описание пунктов меню.
Разработка программы
1) описание процедур и функций (заголовок, назначение, описание параметров процедуры или функции);
2) состав проекта: перечисляются файлы проекта. Для каждого файла указываются: 1) имя; 2) функциональное назначение; 3) местоположение (необходимое или рекомендуемое расположение файла на внешнем носителе).
Разработка документации
Раздел должен включать «Руководство пользователя», содержащее следующие подразделы:
· назначение системы и выполняемые функции;
· условия применения системы;
· сценарий взаимодействия с пользователем.
Подраздел «Назначение системы и выполняемые функции» должен содержать общую характеристику системы и перечень обслуживаемых запросов. Подраздел «Условия применения системы» должен содержать требования к техническим характеристикам ЭВМ (типу процессора, объему оперативной и внешней памяти, периферийному оборудованию), операционной системе и вспомогательному программному обеспечению.
Сценарий взаимодействия с пользователем включает следующие описания:
· структура основного окна программы;
· описание последовательности действий пользователя при работе с элементами управления графического интерфейса окна приложения (визуальное представление, описание, возможные значения элемента управления, действия пользователя после выбора каждого из значений);
· перечень сообщений пользователю.
Тестирование программной системы
В разделе, посвященном описанию процесса тестирования разработанной системы, следует указать план тестирования, результаты тестирования и их анализ.
Приложения
В одном из приложений обязательно должны приводиться распечатки наиболее важных фрагментов программы. Объем распечаток не должен превышать 25 страниц. Приводимые тексты программ должны быть тщательно прокомментированы.
Правила сдачи проекта руководителю проекта
1. Предъявляются следующие материалы:
1) пояснительная записка в электронном виде;
2) исходные коды проекта.
2. Проверяется соответствие пояснительной записки предъявляемым требованиям.
3. Как правило, осуществляются:
1) компиляция и сборка проекта;
2) решение тестовых задач.
Инструментальные требования
ЭВМ - ПЭВМ, совместимая с IBM PC.
Инструментальная среда - MSWindows, среда разработки - Microsoft Visual Studio 6.0.
Средства проектирования - Win 32API.
Задание выдано «___»________ 2017 г. Доцент каф. ВПМ Маркова В.В.
Содержание
Задание
Введение
1. Постановка задачи
2. Описание проектного решения
2.1 Сценарий работы приложения
2.2 Внешнее и внутреннее представление элементов
3. Работа программы
3.1 Описание процедур и функций
3.2 Состав проекта
3.3 Дополнительные библиотеки
4. Разработка документации
4.1 Руководство пользователя
4.1.1 Назначение системы и выполняемые функции
4.1.2 Минимальные системные требования
4.1.3 Сценарий взаимодействия с пользователем
5. Тестирование программной системы
6. Список литературы
7. Приложение
7.1 Текст программы
7.1.1 SHRIFT.cpp
7.1.2 SHRIFT.h
7.1.3 Resourse.h
7.1.4 SHRIFT.rc
Введение
Создание компьютерных программ является процессом творческим и вместе с тем технологичным. Существуют разные системы программирования, которые позволяют создавать удобные для пользователей программы на языках программирования высокого уровня вроде С++ с использованием визуальных средства разработки.
Графический интерфейс (GraphicalUserInterface, GUI) - это система средств для взаимодействия пользователя с компьютером, основанная на представлении всех доступных пользователю системных объектов и функций в виде графических компонентов экрана (окон, значков, кнопок, полей ввода, список и т.п.). При работе с GUI пользователь имеет произвольный доступ (с помощью клавиатуры или указательного устройства ввода) ко всем видимым экранным объектам - элементам интерфейса.
Одним из требований к хорошему графическому интерфейсу программной системы является концепция «делай то, что я имею ввиду» или DWIM (DoWhatIMean). DWIM требует, чтобы система работала предсказуемо, чтобы пользователь заранее интуитивно понимал, какое действие выполнит программа после получения его команды.
Программирование в среде разработки среда разработки - Microsoft Visual Studio 6.0. на языке С++ в проекте Win32Application c использованием Win32 Api функций является низкоуровневым программированием и позволяет получать программы небольшого размера и высокого быстродействия, но сама разработка таких программ требует более значительных усилий и времени, чем в программных средствах визуального проектирования, когда не надо обращаться непосредственно к Win32API функциям.
1. Постановка задачи
Целью выполнения данной работы является разработка графического интерфейса для приложения «Шрифт». В качестве интерактивной среды разработки приложения было выбрано Visual Studio 6.0. на языке С++, проект Win32Application.
Необходимо: В рабочей области окна создать многострочный редактор, в котором введен произвольный текст. Задать пункт меню Шрифт, после выбора которого открывается диалоговое окно выбора стиля шрифта текста (обычный, полужирный, курсив, полужирный курсив). После нажатия ОК вывести текст в соответствии с выбранным стилем.
Программа должна обладает следующим функционалом:
1. Меню «Файл» с пунктами «О программе» и «Выход».
2. Меню «Шрифт».
2. Описание проектного решения
2.1 Сценарий работы приложения
Сценарий работы приложения «Шрифт» описан в таблице 1.
Таблица 1- Сценарий работы приложения
Название формы |
Назначение |
Элемент управления |
Содержание формы, взаимодействие с другими формами |
|
1 |
2 |
3 |
4 |
|
Главное окно |
Выбор режимов работы программы |
Главное меню поле многострочного редактора |
Вызов других программы |
|
Форма выбора шрифта |
Выбор стиля шрифта с помощью системного диалогового окна «Выбор шрифта» (или радио-кнопок с типами стиля шрифта) и применение выбранного в многостраничном окне редактора главного окна после нажатия кнопки «ОК». |
4 радио-кнопки (элементы RadioButton), кнопка «Выбор стиля шрифта», кнопка закрытия формы и применения выбранного стиля шрифта (ОК). |
||
Форма «О программе» |
Вывод информации о программе |
Элементы Static в которых выводится справочная информация о программе, элемент Icon для отображения эмблемы программы, кнопка закрытия формы «ОК». |
2.2 Внешнее и внутреннее представление элементов
Внешнее и внутренне представление элементов приложения «Шрифт» представлено в таблице 2.
Таблица 2 - Внешнее и внутреннее представление элементов
Идентификатор элемента |
Визуальное представление |
Возможное значение |
|
1 |
2 |
3 |
|
IDD_ABOUTBOX |
DIALOG |
- |
|
IDD_DIALOG_SH |
DIALOG |
- |
|
hEdit |
CHAR |
||
IDI_SHRIFT |
- |
||
IDC_STATIC IDC_STATIC |
- |
||
IDOK |
- |
||
IDC_ST1 |
- |
||
IDOK |
- |
||
IDC_RADIO1 IDC_RADIO2 IDC_RADIO3 IDC_RADIO4 |
- |
3. Работа программы
3.1 Описание процедур и функции
WndProc (HWNDhwnd, UINTiMsg, WPARAMwParam, LPARAMlParam) - функция обработки главного окна приложения;
hwnd - описатель главного окна;
iMsg-сообщение;
wParam, lParam - параметры сообщения;
About (HWNDhDlg, UINTiMsg, WPARAMwParam, LPARAMlParam) - функция обработки окна «О программе»;
hDlg - описатель диалога;
iMsq - сообщение;
wParam, lParam - параметры сообщения;
Dialog_SH (HWNDhDlg, UINTiMsg, WPARAMwParam, LPARAMlParam) - функция обработки окна «Выбор стиля шрифта»;
hDlg - описатель диалога;
iMsq - сообщение;
wParam, lParam - параметры сообщения;
IsDlgButtonChecked(hDlg,IDC_RADIO(номер кнопки)) - проверка - нажата ли радиокнопка IDC_RADIO(номер кнопки), где номер кнопки от 1 до 4;
hDlg - описатель диалога;
3.2 Состав проекта
SHRIFT.cpp - Исходный файл приложения.
StdAfx.cpp - Файл для прекомпиляции
StdAfx.h - заголовочный файл для прекомпиляции
SHRIFT.h - заголовочный файл.
Resource.h - Это стандартный файл заголовка, в котором определяется новые идентификаторы ресурсов.
SHRIFT.rc - файл описания ресурсов.
3.3 Дополнительные библиотеки
При компиляции без ошибок получается исполнимый файл SHRIFT.exe, который может работать автономно без участия среды Microsoft Visual Studio 6.0.
4. Разработка документации
4.1 Руководство пользователя
4.1.1 Назначение системы и выполняемые функции
Программа предназначена для работы с текстом многострочного редактора в интерактивном режиме. Она позволяет производить изменение стиля шрифта для текста (обычный, полужирный, курсив, полужирный курсив) в соответствии с выбором пользователя программы.
4.1.2 Минимальные системные требования
В ходе мониторинга тестирования программы были зафиксированы следующие данные по использованию ресурсов компьютера:
Среднее общее использование оперативной памяти 1 588 КБ.
Загрузка процессора Intel I7-6700K на 0.01% при работе программы.
Программа была протестирована со следующими видеоадаптерами:
1. Asus GTX-1070 6ГБ.
2. Встроенное в процессор графическое ядро Intel HD Graphics 530.
В обоих случаях мониторинг зафиксировал нулевое использование графической памяти. Исходя из этого из списка требования исключен видеоадаптер.
C помощью режима совместимости Windows программа была запущена на следующих версиях ОС Windows:
1. Windows Vista
2. Windows Vista (пакет обновления 1)
3. Windows Vista (пакет обновления 2)
4. Windows 7
5. Windows 8
На всех версиях программа стабильно запускалась и работала с большими числами. Исходя из этого системные требования основаны на минимальной возможной версии режима совместимости Windows.
· Система - Windows Vista или выше;
· Процессор - Любой процессор с частотой 1ГГц или выше.
· ОЗУ - 256 МБ или выше.
· Жесткий диск - 1 MB свободного места на жестком диске;
· Устройство ввода - Клавиатура/Мышь.
4.1.3 Сценарий взаимодействия с пользователем
Основное окно программы состоит из экрана с полем текстового редактора и меню (Рис. 1)
Рисунок 1 - Основное окно программы
Меню «Файл» содержит пункты: «Выход» - выход из программы, а также пункт «О программе». При выборе этого пункта меню откроется диалоговое окно «О программе», в котором указывается краткая информация о программе.
Пункт меню «Шрифт» вызывает диалоговое окно «Выбор стиля шрифта», в котором пользователь задает параметры форматирования текста.
Рисунок 2 - Меню программы
При выборе пункта меню «Шрифт», открывается диалоговое окно «Выбор стиля шрифта», в котором мы можем выбрать стиль шрифта текста (обычный, полужирный, курсив, полужирный курсив). Выбор осуществляется либо через кнопку «Выбор стиля шрифта», либо непосредственно нажатием одной из радио-кнопок с текстом стиля шрифта (обычный, полужирный, курсив, полужирный курсив). При выборе через кнопку «Выбор стиля шрифта», которая вызывает системное окно выбора стиля шрифта, этот выбор отображается на состоянии радио-кнопок.
При нажатии кнопки «ОК» этот выбранный стиль шрифта отображается в многострочном редакторе главного окна программы (Рис. 3).
Рисунок 3 - Диалоговое окно «Выбор стиля шрифта»
При выборе пункта меню «О программе», откроется диалоговое окно «О программе». Закрывается оно кнопкой «ОК» (Рис. 4).
Рисунок 4 - Диалоговое окно «О программе»
5. Тестирование программной системы
Этап тестирования является важным звеном всего жизненного цикла программы. Проверим работоспособность всех функций нашей программы. Загрузим исполняемый файл программы SHRIFT.exe. Получим экран, изображенный на рисунке (Рис. 1). Текст отображен стилем шрифта «Обычный».
Добавим в поле многострочного редактора 2 строки «Многострочный редактор позволяет работать с множеством строк. Вот это последняя строка.». Мы видим, что строки добавлены, изменения исходного текста не заблокированы.
Проверим пункт меню «Шрифт». По нажатию пункта меню «Шрифт» открывается диалоговое окно выбора стиля шрифта.
Рисунок 5 - Диалоговое окно «Выбор стиля шрифта»
Нажмем кнопку «Выбор стиля шрифта» и выберем стиль текста - «полужирный курсив».
Рисунок 6 - Выбор стиля «Полужирный курсив» для шрифта
По нажатию кнопки ОК окно выбора стиля шрифта закроется и на экране «Выбор стиля шрифта» будет отмечена радио-кнопка «Полужирный курсив» (мы также можем сделать выбор стиля шрифта, не заходя в системное окно «Выбора шрифта», а непосредственно нажав одну из этих кнопок). В дальнейшем протестируем все кнопки и их действия на изменения шрифта в многострочном редакторе.
Рисунок 7 - Выбран стиль шрифта «Полужирный курсив»
Теперь нажмем кнопку «ОК». Окно закроется и мы попадем в главное окно программы, в котором стиль шрифта для текста изменится на «Полужирный курсив».
Рисунок 8 - Стиль шрифта изменился на «Полужирный курсив»
Подобным же образом проведем тесты для других стилей шрифта (обычный, жирный, курсив) заходя в системное окно «Выбора шрифта» и непосредственно нажимая одну из радио-кнопок выбора стиля шрифта.
При выборе пункта меню «Выход» программа заканчивает работу и выходит в операционную систему Windows.
Итак, проведенные тесты показали, что программа работает правильно и соответствует своему назначению.
6. Список литературы
1. Маркова В.В. «Графические интерфейсы информационных систем» - РГРТУ.
2. Щупак Ю. Win32 API - Эффективная разработка приложений, М. Питер, 2007 - 573 с.;
3. MSDN - Сеть разработчиков Microsoft [Электронный ресурс] - https://msdn.microsoft.com/ru-ru/ (2017 г.)
4. Р.М.Ганеев. ПРОЕКТИРОВАНИЕ ИНТЕРФЕЙСА ПОЛЬЗОВАТЕЛЯ СРЕДСТВАМИ WIN32.
7. Приложение
приложение процедура пользователь программный
7.1 Текст программы
7.1.1 SHRIFT.cpp
// SHRIFT.cpp : Опрелеляет точку входа для приложения
//
#include <windows.h>
#include "stdafx.h"
#include <COMMDLG.H>
#include <cstring>
#include "resource.h"
#define MAX_LOADSTRING 50
// Глобальные переменные:
COLORREF clfMainT=RGB(0,0,0); // устанавливаем черный цвет для шрифта
COLORREF clfMain=RGB(255,255,255); // устанавливаем белый цвет для фона шрифта
HWND hwnd1,hEditG;
HINSTANCE hInst; // Текущий экземпляр
TCHAR szTitle[MAX_LOADSTRING]; // Текст заголовка окна
TCHAR szWindowClass[MAX_LOADSTRING]; // Текст регистрации
int razmerShrift=16; // Размер шрифта для многострочного редактора
int Height0=0;
int ZfnWeight=0;
bool ZfdwItalic = false;
HDC HDChEdit;
char StilV[50];
char *TStilV = StilV ;
char *PchBuff;
HFONT hFontG;
// Прототипы функций, входящих в данный модуль:
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK Dialog_SH(HWND, UINT, WPARAM, LPARAM);
// Главная процедура приложения
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// Помещаем код здесь.
MSG msg;
// Инициализация глобальных строк текста
LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
LoadString(hInstance, IDC_SHRIFT, szWindowClass, MAX_LOADSTRING);
// Вызов функции регистрации приложения
MyRegisterClass(hInstance);
// Инициализация приложения:
if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}
// Цикл ожидания и обработки сообщений:
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
//
// FUNCTION: MyRegisterClass()
//
// НАЗНАЧЕНИЕ: Регистрирует оконный класс
//
// COMMENTS:
//
// This function and its usage is only necessary if you want this code
// to be compatible with Win32 systems prior to the 'RegisterClassEx'
// function that was added to Windows 95. It is important to call this function
// so that the application will get 'well formed' small icons associated
// with it.
//
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_SHRIFT);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = (LPCSTR)IDC_SHRIFT;
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);
return RegisterClassEx(&wcex);
}
//
// FUNCTION: InitInstance(HANDLE, int)
//
// PURPOSE: Saves instance handle and creates main window
//
// COMMENTS:
//
// In this function, we save the instance handle in a global variable and
// create and display the main program window.
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;
hInst = hInstance; // Store instance handle in our global variable
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
if (!hWnd)
{
return FALSE;
}
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
//
// FUNCTION: WndProc(HWND, unsigned, WORD, LONG)
//
// НАЗНАЧЕНИЕ: Обработка сообщений главного окна.
//
// WM_COMMAND - обработка команд меню
// WM_PAINT - перерисовка окна
// WM_DESTROY - посылка сообщения о завершении и выход
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
HWND hEdit;
hwnd1 = hWnd;
switch (message)
{
// выполняется при создании главного окна hWnd
case WM_CREATE:
{
// Создаем многострочный текстовый редактор
// (ES_MULTILINE - многострочность)
hEdit = CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER|ES_LEFT|ES_MULTILINE|ES_AUTOVSCROLL,
20,20,750,280, hWnd,(HMENU)0,hInst,NULL);
hEditG = hEdit;
HDChEdit=GetWindowDC(hEdit);
Height0 = -MulDiv(razmerShrift, GetDeviceCaps(HDChEdit, LOGPIXELSY), 72);
hFontG = CreateFont(Height0, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH, "Times New Roman"); //
SendMessage (hEdit, WM_SETFONT, WPARAM (hFontG), TRUE);
// Начальные установки стиля шрифта для многострочного окна редактирования
HFONT MyFont;
LOGFONT LF0={
16, // логическая высота шрифта
0, // логическая средняя ширина символа
0, // угол наклона
0, // угол ориентации базисной линии
120, // толщина шрифта
0, // описатель параметра курсивного шрифта
0, // описатель параметра подчеркивания
0, // описатель параметра зачеркивания
DEFAULT_CHARSET, // идентификатор набора символов
OUT_DEFAULT_PRECIS, // точность вывода
CLIP_DEFAULT_PRECIS, // точность отсечения
PROOF_QUALITY, // качество вывода
FIXED_PITCH, //шаг между символами шрифта и семейство
"Times New Roman"}; // имя гарнитуры шрифта
// CreateFontIndirect создает логический шрифт, который имеет заданные характеристики. Шрифт может впоследствии
// быть выбран как текущий шрифт для любого контекста устройства.
MyFont = CreateFontIndirect(&LF0);
SetWindowText(hEdit,"Многострочный редактор. В нем можно выбрать шрифт (обычный, полужирный, курсив, полужирный курсив).");
DeleteObject(MyFont);
SetFocus(hEdit); // установить фокус ввода на поле многострочного редактора
return 0;
}
//======= Ветвь обработки команд, исходящих
//======= от элементов управления окна
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// === Расшифровка выбора в меню
switch (wmId)
{
case IDM_ABOUT:
// если выбран пункт меню "О программе" вызвать соотв.процедуру
// About
DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
break;
case IDM_SHRIFT:
// если выбран пункт меню "Шрифт" вызвать соотв.процедуру обработки
// диалогового окна DialogStil
DialogBox(hInst, (LPCTSTR)IDD_DIALOG_SH, hWnd, (DLGPROC)Dialog_SH);
break;
case IDM_EXIT:
// если выбран пункт меню "Выход" - завершить работу программы
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
// From MSDN:
// This message is sent to the parent window of an edit control when the control is about
// to be drawn. By responding to this message, the parent window can use the specified
// device context handle to set the text and background colors of the edit control.
// Для изменения стандартных цветов контролов в Windows имеется механизм,
// основанный на посылке контролу сообщения семейства WM_CTLCOLORxxx перед // его отрисовкой. Для окна редактирования это будет сообщение // WM_CTLCOLOREDIT. В обработчик этого сообщения передается хэндл контекста // контрола, в котором можно произвести необходимые настройки цвета текста, // цвета фона текста и режима прозрачности фона текста (не стоит забывать и о // возможности установки нужного шрифта). По окончании обработки сообщения // обработчик обязан вернуть хэндл кисти, которой будет закрашен фон всего окна // контрола.
case WM_PAINT:
// ======= Ветвь перерисовки содержимого окна
hdc = BeginPaint(hWnd, &ps);
//// TODO: Вставьте сюда рисующий код...
// ничего не рисуем в окне
EndPaint(hWnd, &ps);
break;
case WM_DESTROY: //======= Ветвь закрытия окна
DeleteObject(hFontG);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
// Обработка сообщений диалогового окна "О программе".
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
EndDialog(hDlg, LOWORD(wParam)); // если нажата кнопка
// ОК - завершить программу
return TRUE;
}
break;
}
return FALSE;
}
// Сообщения диалогового окна "Выбор выделения шрифта"
LRESULT CALLBACK Dialog_SH(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
static CHOOSEFONT cf;
static LOGFONT lf;
static char szFontStyle[10];
static short bkMode;
int i=0;
cf.lStructSize = sizeof(CHOOSEFONT);
cf.lpLogFont = &lf;
cf.Flags = CF_SCREENFONTS | CF_USESTYLE | CF_EFFECTS| CF_INITTOLOGFONTSTRUCT;
cf.lpszStyle = (LPSTR) szFontStyle;
cf.nFontType = BOLD_FONTTYPE;
bkMode = TRANSPARENT;
switch (message)
{
case WM_INITDIALOG: //======= Ветвь инициализации окна диалога
{
// вначале в группе радио-кнопок отмечаем первую кнопку "Обычный"
CheckRadioButton(hDlg, IDC_RADIO1, IDC_RADIO4, IDC_RADIO1);
}
break;
case WM_PAINT:
{
// Дескриптор контекста устройства
HDC hDC1;
// Указатель на структуру с информацией для приложения о
// клиентской области окна, используется для вывода в окно
PAINTSTRUCT ps1;
// Для любого вывода в окно Windows необходимо использовать
// функции GDI, которые в качестве параметра используют
// контекст устройства. Обычно контекст устройства получают с
// помощью фунции BeginPaint
hDC1 = BeginPaint( hDlg, &ps1 );
// в диалоговое окно ничего выводить не будем
// Вывод информации в окно завершается вызовом функции EndPaint
// (для каждого вызова BeginPaint должен существовать
// соответствующий вызов EndPaint)
EndPaint( hDlg, &ps1 );
return TRUE;
}
break;
case WM_COMMAND:
if (LOWORD(wParam) == IDOK) // кнопка ОК
{
DeleteObject(hFontG); // удаляем объект фонт hFontG
HDChEdit=GetWindowDC(hEditG); // взять дескриптор HDC поля Edit
// перевести размер фонта выбранный в диалоге в логическую
// единицу для функции CreateFont
// Формула определяет высоту для шрифта в специфичных точечных размерах
// GetDeviceCaps функция извлекает зависимую от устройства информацию для заданного устройства.
// LOGPIXELSY Число пикселей на логический дюйм по экранной высоте. В системе с много экранными
// мониторами, это значение одно и то же для всех мониторов.
Height0 = -MulDiv(razmerShrift, GetDeviceCaps(HDChEdit, LOGPIXELSY), 72);
strcpy(StilV,(const char *) TStilV);
// если была отмечена радио-кнопка "Обычный"
// то в переменную StilV копируем строку "Обычнй"
// для других радио-кнопок аналогично
if (IsDlgButtonChecked(hDlg,IDC_RADIO1)==BST_CHECKED)
strcpy(StilV, "обычный");
if (IsDlgButtonChecked(hDlg,IDC_RADIO2)==BST_CHECKED)
strcpy(StilV, "полужирный");
if (IsDlgButtonChecked(hDlg,IDC_RADIO3)==BST_CHECKED)
strcpy(StilV, "курсив");
if (IsDlgButtonChecked(hDlg,IDC_RADIO4)==BST_CHECKED)
strcpy(StilV, "полужирный курсив");
// Функция CreateFont создает логический фонт с выбранными характеристиками
// if (StilV == "обычный") ZfnWeight=FW_NORMAL;
ZfnWeight=FW_NORMAL; // по умолчанию обычный вид шрифта
ZfdwItalic = false; // наклона шрифта (Italic) нет
// сравниваем содержимое переменной StilV со словами "обычный"
// "полужирный" и т.д. и в зависимости от того, что там находится
// устанавливаем такой шрифт
if (!strcmp((const char *) StilV, "обычный")) ZfnWeight=FW_NORMAL; // 400 - обычный
if (!strcmp((const char *) StilV, "полужирный")) ZfnWeight=FW_SEMIBOLD; // 600 - полужирный
if (!strcmp((const char *) StilV, "полужирный курсив")) { ZfnWeight=600; ZfdwItalic = true; }// FW_ULTRABOLD=800
if (!strcmp((const char *) StilV, "курсив")) ZfdwItalic=true; // курсив
hFontG = CreateFont(Height0, 0, 0, 0, ZfnWeight, ZfdwItalic, FALSE, FALSE, RUSSIAN_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH | FF_SWISS, "Times New Roman"); // создать новый фонт с выбранными параметрами
// послать сообщение (установить фонт) окну поля Edit1
SendMessage (hEditG, WM_SETFONT, WPARAM (hFontG), TRUE);
EndDialog(hDlg, LOWORD(wParam)); // закрытие диалового окна hDlg
return TRUE;
}
if (LOWORD(wParam) == IDC_ST1) // выбор стиля шрифта
{
lf.lfCharSet=DEFAULT_CHARSET;
lf.lfPitchAndFamily=DEFAULT_PITCH;
strcpy(lf.lfFaceName,"Times New Roman");
lf.lfHeight=26;
LOGFONT lf2={90, 0, 0, 0, 0, 0, 0, 0, RUSSIAN_CHARSET,
0, 0, 0, 0, "Times New Roman"};
// Вызываем диалог выбора параметров шрифта
HFONT hFont;
hFont = CreateFontIndirect(&lf);
if (ChooseFont(&cf)) // вызываем сист.диалог выбора стиля шрифта
{
bkMode = TRANSPARENT;
MessageBox(hDlg,cf.lpszStyle,"Выбран стиль ",MB_OK);
TStilV=cf.lpszStyle;
// сохраняем выбранный стиль шрифта в переменной StilV
strcpy(StilV,(const char *) TStilV);
// нажать соотв.радио-кнопку
if (!strcmp((const char *) StilV, "обычный"))
CheckRadioButton(hDlg, IDC_RADIO1, IDC_RADIO4, IDC_RADIO1);
if (!strcmp((const char *) StilV, "полужирный"))
CheckRadioButton(hDlg, IDC_RADIO1, IDC_RADIO4, IDC_RADIO2);
if (!strcmp((const char *) StilV, "курсив"))
CheckRadioButton(hDlg, IDC_RADIO1, IDC_RADIO4, IDC_RADIO3);
if (!strcmp((const char *) StilV, "полужирный курсив"))
CheckRadioButton(hDlg, IDC_RADIO1, IDC_RADIO4, IDC_RADIO4);
}
else bkMode = OPAQUE;
DeleteObject(hFont);
InvalidateRect(hDlg,NULL,FALSE);
return TRUE;
}
break;
}
return FALSE;
}
7.1.2 SHRIFT.h
#if !defined(AFX_SHRIFT_H__47DC8DB5_4380_4506_AFF1_99E181A5F1E5__INCLUDED_)
#define AFX_SHRIFT_H__47DC8DB5_4380_4506_AFF1_99E181A5F1E5__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "resource.h"
#endif // !defined(AFX_SHRIFT_H__47DC8DB5_4380_4506_AFF1_99E181A5F1E5__INCLUDED_)
7.1.3 Resource.h
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by SHRIFT.rc
//
#define IDC_MYICON 2
#define IDD_SHRIFT_DIALOG 102
#define IDD_ABOUTBOX 103
#define IDS_APP_TITLE 103
#define IDM_ABOUT 104
#define IDM_EXIT 105
#define IDS_HELLO 106
#define IDI_SHRIFT 107
#define IDI_SMALL 108
#define IDC_SHRIFT 109
#define IDR_MAINFRAME 128
#define IDD_DIALOG_SH 129
#define IDC_ST1 1000
#define IDC_RADIO1 1004
#define IDC_RADIO2 1005
#define IDC_RADIO3 1006
#define IDC_RADIO4 1007
#define IDM_SHRIFT 32771
#define IDC_STATIC -1
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 130
#define _APS_NEXT_COMMAND_VALUE 32772
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 110
#endif
#endif
7.1.4 SHRIFT.rc
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#define APSTUDIO_HIDDEN_SYMBOLS
#include "windows.h"
#undef APSTUDIO_HIDDEN_SYMBOLS
#include "resource.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// Russian resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
#ifdef _WIN32
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
#pragma code_page(1251)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
IDC_SHRIFT MENU DISCARDABLE
BEGIN
POPUP "Файл"
BEGIN
MENUITEM "О программе", IDM_ABOUT
MENUITEM SEPARATOR
MENUITEM "Выход", IDM_EXIT
END
MENUITEM "Шрифт", IDM_SHRIFT
END
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_ABOUTBOX DIALOG DISCARDABLE 22, 17, 230, 75
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "О программе"
FONT 12, "Arial Narrow"
BEGIN
ICON IDI_SHRIFT,IDC_MYICON,14,9,20,20
LTEXT "Программа ""Шрифт"" Version 1.0",IDC_STATIC,49,10,119,8,
SS_NOPREFIX
DEFPUSHBUTTON "OK",IDOK,195,6,30,11,WS_GROUP
LTEXT " Учебная программа",IDC_STATIC,48,21,119,8,SS_NOPREFIX
END
IDD_DIALOG_SH DIALOG DISCARDABLE 0, 0, 197, 140
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Выбор стиля шрифта"
FONT 12, "Times New Roman"
BEGIN
DEFPUSHBUTTON "OK",IDOK,146,109,44,14
PUSHBUTTON "Выбор стиля шрифта",IDC_ST1,124,18,66,37,
BS_MULTILINE
CONTROL "Обычный",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON |
WS_GROUP,27,21,57,15
CONTROL "Полужирный",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,28,
38,70,15
CONTROL "Курсив",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,28,56,48,
15
CONTROL "Полужирный курсив",IDC_RADIO4,"Button",
BS_AUTORADIOBUTTON,28,72,98,15
END
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE
BEGIN
IDD_DIALOG_SH, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 190
TOPMARGIN, 7
BOTTOMMARGIN, 133
END
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE DISCARDABLE
BEGIN
IDS_APP_TITLE "Программа ""Шрифт"""
IDC_SHRIFT "SHRIFT"
END
#endif // Russian resources
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_SHRIFT ICON DISCARDABLE "SHRIFT.ICO"
IDI_SMALL ICON DISCARDABLE "SMALL.ICO"
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
"#include ""windows.h""\r\n"
"#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
"#include ""resource.h""\r\n"
"\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
Размещено на Allbest.ru
...Подобные документы
Теоретические основы разработки приложения, реализующего подсвечивание ключевых слов. Описание используемых процедур и функций, структуры программы, интерфейса пользователя. Системные требования для работы приложения, анализ результаты его тестирования.
курсовая работа [1,2 M], добавлен 07.07.2012Описание использованных структур данных, характеристика процедур и функций. Структура приложения и интерфейс пользователя. Системные требования и имеющиеся ограничения. Тестирование приложения. Анализ временных характеристик и выводы по эффективности.
курсовая работа [3,3 M], добавлен 23.07.2012Разработка программного продукта - приложения, позволяющего заносить данные анкетирования в базу данных MS SQL. Описание логики работы приложения, особенности пользовательского интерфейса. Формы просмотра анкет, описание процедур и функций программы.
курсовая работа [1,2 M], добавлен 16.08.2012Разработка программы-приложения для создания композиции кривых второго порядка в полярных координатах. Описание используемых констант, переменных, компонентов, процедур и функций. Источники входной и выходной информации. Требования к программе и системе.
реферат [125,2 K], добавлен 28.05.2014Разработка консольного приложения: описание и сценарий использования программы, интерфейс пользователя. Поэтапное описание создание кода компьютерной игры "Крестики нолики". Функциональные и нефункциональные требования, описание исключительных ситуаций.
методичка [819,6 K], добавлен 12.05.2013Описание использованных структур данных и разработка программы, обеспечивающей сжатие данных по алгоритму LZ77 с пошаговой визуализацией. Описание процедур, функций, структуры приложения и интерфейса пользователя. Тест и анализ работы алгоритма LZ77.
курсовая работа [537,9 K], добавлен 28.06.2011Описание автоматизированной информационной системы автотранспортного предприятия. Область применения системы, ее функциональное содержание и возможности. Требования к программной и аппаратной части, алгоритм работы. Сценарий работы с пользователем.
курсовая работа [638,6 K], добавлен 18.09.2014Создание системы информационного обмена для страховой медицинской организации. Разработка алгоритмов, интерфейса пользователя, экранных форм и отчетов, процедур и функций приложения. Расчет цены разработанной программы, капитальных вложений и расходов.
дипломная работа [1,4 M], добавлен 20.07.2014Описание структуры обучающего блока. Проектирование его алгоритма и лингвистического и информационного обеспечения. Организация его взаимодействия с базой данных. Разработка графического интерфейса. Программная реализация основных функций приложения.
дипломная работа [2,1 M], добавлен 20.12.2015Анализ предметной области "Конкурс поэтов" на основе объектно-ориентированного подхода. Разработка оконного приложения и описание информационной модели предметной области. Описание разработанных процедур С++ и результатов тестирования приложения.
курсовая работа [355,9 K], добавлен 18.06.2013Описание технологии asp.net. Страницы веб-приложения, тестирование системы. Описание функциональной, динамической модели системы. Диаграммы вариантов использования, последовательности, база данных приложения. Реализация программы, интерфейс, тестирование.
курсовая работа [3,2 M], добавлен 30.01.2013Описание предметной области. Компоненты и палитра компонентов. Выбор архитектуры приложения. Структурные и функциональные схемы. Описание разрабатываемых процедур и функций, таблица идентификаторов. Выбор стратегии тестирования и разработка тестов.
дипломная работа [8,2 M], добавлен 18.06.2014Проектирование пользовательского интерфейса программы, осуществляющей шифрование и дешифрование файлов. Выбор формата представления данных. Список процедур, макросов и их назначение. Описание используемых в программе функций, ее тестирование и отладка.
курсовая работа [29,3 K], добавлен 17.05.2013Общая характеристика и функциональное назначение проектируемого программного обеспечения, требования к нему. Разработка и описание интерфейса клиентской и серверной части. Описание алгоритма и программной реализации приложения. Схема базы данных.
курсовая работа [35,4 K], добавлен 12.05.2013Общее описание разрабатываемого приложения, его актуальность и сферы практического применения. Выбор среды разработки и языка программирования, 3D-движка. Архитектура приложения, интерфейса и его главных элементов, взаимодействие с пользователем.
дипломная работа [317,5 K], добавлен 10.07.2017Описание предметной области. Характеристика программных средств. Описание компонентов, интерфейс программы. Описание процедур и функций. Вызов и загрузка программы. Испытание методом белого и черного ящика на ошибки кода программного приложения.
курсовая работа [2,2 M], добавлен 26.04.2015Описание существующих технологий, поддерживающих концепцию распределенных объектных систем. Особенности технологии DCOM. Разработка параметров приложения. Выбор инструмента разработки и его обоснование. Схема взаимодействия для локального приложения.
курсовая работа [769,8 K], добавлен 05.01.2013Логическая и физическая структура базы данных. Аппаратное и программное обеспечение системы. Создание представлений, хранимых процедур, пользовательских функций, триггеров. Описание основной структуры ASP.NET документов. Пользовательский интерфейс.
курсовая работа [4,2 M], добавлен 21.05.2013Анализ целевой аудитории. Функциональные характеристики пользовательского приложения. Разработка алгоритмов и интерфейса программного продукта, функций рабочей области. Написание скриптов на языке C#. Тестирование программы методом чёрного ящика.
дипломная работа [1,5 M], добавлен 09.11.2016Анализ и описание алгоритма. Основные характеристики выбранного компьютера, программных сред (операционная система и среда программирования). Описание компонентов и интерфейса программы, а также модулей, процедур и функций. Вызов и загрузка программы.
курсовая работа [1,3 M], добавлен 26.04.2015