WPF - Windows Presentation Foundation. Ключевые возможности.



Мы поможем в написании ваших работ!


Мы поможем в написании ваших работ!



Мы поможем в написании ваших работ!


ЗНАЕТЕ ЛИ ВЫ?

WPF - Windows Presentation Foundation. Ключевые возможности.



 

Windows Presentation Foundation (WPF, кодовое название — Avalon) — система для построения клиентских приложений Windows с визуально привлекательными возможностями взаимодействия с пользователем, графическая (презентационная) подсистема в составе .NET Framework (начиная с версии 3.0), имеющая прямое отношение к XAML.

XAML основанный на XML язык разметки для декларативного программирования приложений, разработанный Microsoft.

В WPF XAML используется как язык разметки пользовательского интерфейса, для определения элементов пользовательского интерфейса, привязки данных, поддержки событий и др. свойств.

XAML файлы можно создавать и редактировать при помощи инструментов визуального конструирования, таких как: Microsoft Expression Blend, Microsoft Visual Studio, WPF visual designer. Также, их можно создавать при помощи стандартного текстового редактора, редактора кода такого как: XAMLPad, или графического редактора, такого как Vectropy.

Все созданное или реализованное в XAML может быть выражено при помощи более традиционных .NET языков, таких как: C# или Visual Basic.NET. Однако, ключевым аспектом технологии является уменьшение сложности используемых для обработки XAML инструментов, так как XAML основан на XML. В результате чего, появляется множество продуктов, создающих основанные на XAML приложения. Поскольку XAML базируется на XML, у разработчиков и дизайнеров появилась возможность одновременно работать над содержимым без необходимости компиляции.

С помощью WPF можно создавать широкий спектр как автономных, так и запускаемых в браузере приложений.

В основе WPFлежит векторная система визуализации, не зависящая от разрешения устройства вывода и созданная с учётом возможностей современного графического оборудования. WPF предоставляет средства для создания визуального интерфейса, включая Язык XAML (Extensible Application Markup Language), элементы управления, привязку данных, макеты, двухмерную и трёхмерную графику, анимацию, стили, шаблоны, документы, текст, мультимедиа и оформление.

Графической технологией, лежащей в основе WPF, является DirectX, в отличие от Windows Forms, где используется GDI/GDI+. Производительность WPF выше, чем у GDI+ за счёт использования аппаратного ускорения графики через DirectX.

Для работы с WPF требуется любой .NET-совместимый язык. В этот список входит множество языков: C#, VB, C++, Ruby, Python, Delphi и многие другие. Для полноценной работы может быть использована как Visual Studio, так и Expression Blend. Первая ориентирована на программирование, а вторая — на дизайн и позволяет делать многие вещи, не прибегая к ручному редактированию XAML. Примеры этому — анимация, стилизация, состояния, создание элементов управления и так далее.

 

49. С++. Интерфейс прикладного программирования Win 32 API. Каркас приложения. Функция окна. Цикл сообщений . Класс окна.

Windows API (англ. application programming interfaces) — общее наименование целого набора базовых функций интерфейсов программирования приложений операционных систем семейств Windows и Windows NT корпорации «Майкрософт». Является самым прямым способом взаимодействия приложений с Windows.

Создание каркаса графического приложения - это занятие достаточно простое с технической точки зрения, но очень (ну может не очень, но все равно) сложное с архитектурной точки зрения.

Основная задача каркаса - предоставить команде программистов поле деятельности, на котором они смогут достаточно быстро описать и построить рабочее приложение. Потом для этого приложения можно будет проводить замену отдельных блоков. Но структура вызовов будет оставаться такой же, а значит, непредвиденных ошибок будет меньше, и они будут более предсказуемыми.

Программа под Windows состоит из следующих частей (всё это происходит внутри WinMain):

· Создание и регистрация класса окна.

· Создание окна программы.

· Основной цикл, в котором обрабатываются сообщения.

· Обработка сообщений программы в оконной процедуре. Оконная процедура представляет собой обычную функцию.

Сообщения — это базовый механизм информирования программ о событиях, на которые они должны реагировать.

MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

Любое действие пользователя отправляется на обработку, это действие обработчик понимает как сообщение, дальше ему нужно его обработать, сделать какие-то действия, направляется в CALLBACK функцию связанную с этим окном, в параметре UINT uMsg хранится код этого сообщения, HWND hWnd - окно кому оно адресовано, WPARAM wParam, LPARAM lParam - дополнительные параметры. при помощи switch-case конструкции "обрабатываем" наш uMsg, и по default'у оставляем ему обработать операционной системе, функция DefWindowProc

Поведение и внешний вид окна определяются его классом. Класс — это внутренняя структура Windows, описывающая шаблон, на основании которого операционная система создает окна. Перед созданием окна необходимо зарегистрировать его класс при помощи функции:

function RegisterClassEx(

const WndClass: TWndClassEx

): ATOM; stdcall;

 

50. С++. Создание главного окна приложения. Регистрация класса окна. Обработка сообщений. Основные типы оконных сообщений Windows.

Окно Само название операционной системы Windows говорит о том, что основным ее элементом является окно. Для успешного программирования разработчик должен иметь четкое представление о том, что подразумевается в Windows под этим понятием. Для начинающих программистов неочевидно, что окнами Windows являются не только главные окна, но и большинство элементов управления в них, поля ввода, списки, кнопки и т.п. Окна могут иметь окно-владельца (Parent window), дочерние окна (Child Window) и располагаются на поверхности владельца.

Класс окна

Поведение и внешний вид окна определяются его классом. Класс — это внутренняя структура Windows, описывающая шаблон, на основании которого операционная система создает окна. Перед созданием окна необходимо зарегистрировать его класс при помощи функции:

function RegisterClassEx

Создание окна

После того как класс зарегистрирован, приложение может создавать окна этого класса функцией: Функция CreateWindowEx позволяет задать конкретный вид окна и уточнить информацию, полученную от класса окна.

Сообщения — это базовый механизм информирования программ о событиях, на которые они должны реагировать. Ядром программы является зарегистрированная в классе окна функция обработки сообщений, вызываемая ядром Windows при появлении событий, на которые программа должна отреагировать. Получение сообщения окном означает вызов его оконной функции с параметрами, описывающими передаваемое сообщение. В программе, написанной с использованием только Windows API, функция обработки сообщений обычно представляет собой оператор case. Альтернативами данного оператора являются различные сообщения, которые эта функция должна обработать.

Типы сообщений:

· Аппаратные сообщения (WM_MOUSEMOVE, WM_RBUTTONDOWN WM_LBUTTONDOWN, WM_CHAR)

· Сообщения обслуживания окна (WM_ACTIVATE, WM_MOVE, WM_CLOSE, WM_PAINT)

· Сообщения об организации интерфейса пользователя (WM_COMMAND-выбран пункт меню, WM_VSCROLL-была нажата вертикальная линейка)

· Сообщения о завершении (WM_QUIT-требование о завершении приложения)

· Частные сообщения (WM_CANCELMODE-Требование системы отменить режим, например, захват мыши)

· Информационные сообщения системных ресурсов (WM_COMPACTING-недостаточно системной памяти)

· Сообщения о совместном использовании данных (WM_ASKCBFORMATNAME – запрашивает имя формата буфера обмена)

Внутрисистемные сообщения(если не обработает, то направляются обработчику сообщений, по умолчанию.).

 

 

51. С++. Библиотека классов MFC. Иерархия классов. Базовый класс CObject.

Пакет Microsoft Foundation Classes (MFC) — библиотека на языке C++, разработанная Microsoft и призванная облегчить разработку GUI-приложений для Microsoft Windows путем использования богатого набора библиотечных классов.

MFC, облегчает работу с GUI путем создания каркаса приложения — «скелетной» программы, автоматически создаваемой по заданному макету интерфейса и полностью берущей на себя рутинные действия по его обслуживанию (отработка оконных событий, пересылка данных между внутренними буферами элементов и переменными программы и т.п.). Программисту после генерации каркаса приложения необходимо только вписать код в места, где требуются специальные действия. Добавление кода приложения к каркасу реализовано двумя способами. Первый использует механизм наследования: основные программные структуры каркаса представлены в виде классов, наследуемых от библиотечных. В этих классах предусмотрено множество виртуальных функций, вызываемых в определенные моменты работы программы. Второй способ используется для добавления обработчиков оконных событий. Мастер создает внутри каркасов классов, связанных с окнами, специальные массивы — карты (оконных) сообщений содержащие пары «ИД сообщения — указатель на обработчик».

При добавлении/удалении обработчика мастер вносит изменения в соответствующую карту сообщений.

Иерархия классов, Базовый класс CObject:

Наверху иерархии находится абстрактный базовый класс CObject. В зависимости от отношения к этому классу все остальные классы библиотеки MFC можно условно разбить на две группы: классы, производные от CObject, и классы, не зависящие от него. Большинство классов относятся к первой группе ( т. е. являются производными от CObject ). Функции и элементы данных CObject представляют наиболее общие свойства производных от него классов MFC. Основное назначение этого класса заключается в предоставлении всем производным классам следующих возможностей:

· Хранение информации о классе обьекта во время выполнения.

· Поддержка сериализации и диагностики обьекта.

От CObject наследуются следующие категории классов:

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

· Набор классов, реализующий механизм обработки исключений средствами MFC. Базовый класс для этой группы - CException.

· Классы, предназначенные для работы с файлами любого типа. Пример базового класса - CFile.

· Классы, направленные на работу с контекстом устройства. Базовый класс - CDC. Классы, представляющие графические обьекты ( кисть, шрифт и т. д. ). Базовый класс - CGdiObject.

· Категория вспомогательных классов, например, CImageList.

· Классы, предназначенные для работы с базами данных.

· Классы, реализующие типы данных. Например, массивы, списки, хэши. Примеры классов: CArray, CList, CMap.

· Другие категории классов, производные от CObject.

 

Единственной переменной класса CObject является статическая переменная classObject типа CRuntimeClass, которая хранит информацию об ассоциированном с классом Cobject объекте во время выполнения программы.

 

 

52. С++. Архитектура приложения на базе MFC. Обработка сообщений в MFC. Включение макрокоманд в карту сообщений. Типы сообщений. Включение обработчиков сообщений в описание класса.

При создании приложения с использованием AppWizard генерируется приложение на базе архитектуры "Документ - Вид". Эта архитектура поддерживается для приложений типа MDI и SDI.

Архитектура "документ - вид" ставит в соотвествие одному классу документа один или несколько классов вида.

CDocumetn ---> CView1

CView2 ......

Шаблон документа это объединение

Класс документа, Класс вида, Рамка окна

Все приложения MFC имеют по крайне мере два объекта

Объект приложений CWinApp

Объект главное окно CFrame, СMDIFrame, CDialog

Объект приложений всегда одного типа, а остальные объекты в зависимости от типа окна. При запуске приложения имеется только один объект приложения, который координирует работу приложения при запуске.

Обработка сообщений в MFC

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

Для организации обработки сообщений нужно выполнить следующие действия:

· В карту сообщений программы должна быть включена команда соответствующего сообщения.

· Прототип функции-обработчика должен быть включен в описание класса, ответственного за обработку данного сообщения.

· В программу должна быть включена реализация функции-обработчика.

Включение макрокоманд в карту сообщений

Чтобы программа могла ответить на сообщение, в карту сообщений должна быть включена соответствующая макрокоманда. Названия макрокоманд соответствуют именам стандартных сообщений Windows, но дополнительно имеют префикс ON_ и заканчиваются парой круглых скобок. Из этого правила есть исключение: сообщению WM_COMMAND соответствует макрокоманда ON_COMMAND(). Причина в том, что это сообщение обрабатывается особым образом.

Чтобы включить макрокоманду в очередь сообщений, нужно просто поместить ее между командами BEGIN_MESSAGE_MAP() и END_MESSAGE_MAP().

BEGIN_MESSAGE_MAP(CMainWin, CFrameWnd)

ON_WM_CHAR()

END_MESSAGE_MAP()

В очереди может находиться более одной макрокоманды.

Включение обработчиков сообщений в описание класса

Каждое сообщение, явно обрабатываемое в программе, должно быть связано с одним из обработчиков. Обработчик - это член-функция класса, принимающего сообщения. Прототипы для обработчиков всех сообщений заранее заданы в MFC. Как правило, имя обработчика состоит из имени сообщения и префикса On. Например, обработчик сообщения WM_CHAR называется OnChar(), а для WM_LBUTTONDOWN - OnLButtonDown(). Последнее сообщение генерируется при нажатии левой кнопки мыши.

Префикс WM_ говорит о том, что речь идет об "оконном сообщении" (от Window Message).

Чтобы как-то систематизировать такое огромное количество сообщений, я разделил их на следующие категории:

Аппаратные: Входные данные от мыши и клавиатуры

Организация окна: Уведомление, требование действия, запрос

Организация интерфейса пользователя: Меню, указатель мыши, линейка прокрутки, пользователя блоки диалога, MDI.

Завершение работы:Закрытие прикладной программы или системы

Частные: Элементы управления: кнопка, редактор и т. д.

Уведомление о системном ресурсе:

Изменение цвета, шрифтов, буферизация печати, ресурсе режимы работы устройства

Обмен данными:

Буфер обмена и динамический обмен данными

Внутрисистемные:

Недокументированные сообщения

 

53. С++. Библиотеки динамической компоновки DLL. Динамические библиотеки и библиотеки импорта. Назначение. Технология создания и использования.

Библиотеки динамической компоновки DLL(Dynamic Link Libraries) являются исполняемыми файлами особого формата, которые содержат функции, данные или ресурсы, доступные для других приложений. Библиотеки DLL загружаются при необходимости либо на стадии загрузки, либо на стадии выполнения приложения.

Используя механизм динамической компоновки, в загрузочном файле программы можно расположить только те функции, которые являются специфическими для данной задачи. Функции, которые нужны всем или многим программам, работающим параллельно, можно вынести в отдельные файлы – библиотеки динамической компоновки – и хранить в памяти в единственном экземпляре. Эти файлы можно загружать в память при необходимости, например, когда какая-нибудь программа захочет вызвать функцию, код которой расположен в библиотеке.

DLL-библиотеки имеют расширение имени dll. Но могут они иметь и расширение exe. Файлы krnl286.exe, krnl386.exe, gdi.exe и user.exe, составляющие ядро Windows, есть не что иное, как DLL-библиотеки.

В момент выполнения программы загружается вся библиотека целиком. Благодаря этому разные процессы могут пользоваться совместно одними и теми же библиотеками, находящимися в памяти. Такой подход позволяет сократить объем памяти, необходимый для нескольких приложений, использующих много общих библиотек, а также контролировать размеры ЕХЕ-файлов.

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

Библиотеки импортирования

При статическом подключении DLL имя .lib-файла определяется среди прочих параметров редактора связей в командной строке или на вкладке "Link" диалогового окна "Project Settings" среды Developer Studio. Однако .lib-файл, используемый при неявном подключении DLL, - это не обычная статическая библиотека. Такие .lib-файлы называются библиотеками импортирования (import libraries). В них содержится не сам код библиотеки, а только ссылки на все функции, экспортируемые из файла DLL, в котором все и хранится. В результате библиотеки импортирования, как правило, имеют меньший размер, чем DLL-файлы.

Создание:

Как обычно, вы просто пишите функции, как в обычной программе. Если вы используете MSVC, создайте новый проект и укажите, что вы создаете Win32 Dynamic-Link Library. После компиляции вы получите DLL, библиотеку импорта (.lib) и библиотеку экспорта (.exp).

Использование DLL (с библиотекой импорта)

Нужно включить заголовочный файл библиотеки и саму библиотеку в проект.

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

При неявном подключении (implicit linking) линкеру передается библиотека импорта (обычно имеет расширение lib), содержащая список переменных и функций DLL, которые могут использовать приложения. Обнаружив, что программа обращается хотя бы к одной из них, линкер добавляет в целевой exe-файл таблицу импорта. Таблица импорта содержит список всех DLL, которые использует программа, с указанием конкретных переменных и функций, к которым она обращается. Позже, когда exe-файл будет запущен, загрузчик проецирует все DLL, перечисленные в таблице импорта, на адресное пространство процесса; в случае неудачи весь процесс немедленно завершается.

При явном подключении (explicit linking) приложение вызывает функцию LoadLibrary, чтобы загрузить DLL, затем использует функцию GetProcAddress, чтобы получить указатели на требуемые функции (или переменные), а по окончании работы с ними вызывает FreeLibrary, чтобы выгрузить библиотеку и освободить занимаемые ею ресурсы.

 

 

54. С++. Расширенные библиотеки DLL. Функция DllMain. Ресурсные DLL. Экспортирование функций и классов.

Функция DllMain - дополнительная точка входа в динамически-подключаемую библиотеку (DLL). Если функция используется, то она вызывается системой тогда, когда процессы и потоки инициализированы и завершили работу или при вызове функции LoadLibrary и FreeLibrary.

DllMain - имя - заместитель для определяемого библиотекой имени функции. Вы должны задать действительное имя, которое используете, когда формируйте вашу DLL.

BOOL WINAPI DllMain(

HINSTANCE hinstDLL, // дескриптор модуля DLL

DWORD fdwReason, // причина вызова функции

LPVOID lpvReserved // зарезервированный

);

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

Разделение ресурсов: DLL могут содержать такие ресурсы, как строки, растровые изображения, шаблоны диалоговых окон. Этими ресурсами может воспользоваться любое приложение.

Некоторые функции/классы могут быть экспортируемыми. Это означает, что такие функции/классы могут быть вызваны программой, использующей данную DLL. Неэкспортируемые функции/классы недоступны извне DLL.

 

 

24. GDI. Класс TextureBrush и Image. Двойная буферизация.

25. GDI. Построение графиков и диаграмм.

21. GDI. Система координат. Структура Point. Класс Font

23. GDI. Структуры Color. Класс Реn и Brush

22. GDI. Структуры Rectangle. Классы GraphicsPath и Region.

12. Windows Forms. Компонент DateTimePicker

44. Windows Forms. Работа с рабочими книгами и листами.

13. Windows Forms. Создание пользовательских элементов управления.

11. Windows Forms. Cursor и Icon

9. Windows Forms. MenuStrip и contextMenuStrip

10. Windows Forms. ToolStrip, и StatusStrip.

45. Windows Forms. Вывод информации в ячейки Excel. Чтение информации из ячеек Excel

3. Windows Forms. Модель обработки событий.

46. Windows Forms. Создание диаграмм. Управление параметрами Excel.

4. Windows Forms. Элементы управления. Button, CheckBox и RadioButton. Label и LinkLabel

6. Windows Forms. Элементы управления. ListBox и CheckedListBox

7. Windows Forms. Элементы управления. ListBox и CheckedListBox

5. Windows Forms. Элементы управления. TextBox и RichTextBox

8. Windows Forms. Элементы управления.TrackBar. ProgressBar. TreeView

48. WPF - Windows Presentation Foundation. Ключевые возможности.

20. Интерфейс графических устройств GDI. Класс Graphics

27. Лямбда-выражения. Лямбда операторы.

29. Методы доступа к СУБД. Технологии уровня данных UDA

2. Модели жизненного цикла ПО

30. Модель объектов ADO и ADO.NET

39. Настройка нетипизированных объектов набора DataSet.

33. Настройка подключений к СУБД с помощью мастеров данных

14. Однодокументные SDI и многодокументные MDI интерфейсы.

31. Постоянное подкл. к СУБД. Основные классы провайдера. DataAdapter. Connection. DataReader.

32. Постоянное подключение к СУБД. Command. Transaction. Constraint.

28. Привязка и представление данных Data binding. Простая привязка к списку объектов Привязка данных DataGridView.

40. Работа с данными в отсоединенной среде. Объекты DataTable. Создание DataAdapter.

38. Работа с данными в отсоединенной среде. Подключение к СУБД, открытие и чтение данных с помощью DataSet.

36. Работа с данными СУБД в соединенной среде. BLOB

37. Работа с данными СУБД в соединенной среде. Выполнение транзакций

35. Работа с данными СУБД в соединенной среде. Создание и выполнение параметризированного запроса Параметризированные ХП.

34. Работа с данными СУБД в соединенной среде. Создание и настройка Command. Выполнение SQL, хранимой процедуры, операции с каталогами. Асинхронное выполнение команд.

19. Работа с файлами. File. FileInfo.

47. Развертывание Windows-приложений. ClickOnce. Создание проектов Setup.

26. Регулярные выражения. Квантификация

43. С#. Реализация глобализации и локализации

42. С#. Реализация операции Drag-and-Drop.

52. С++. Архитектура приложения на базе MFC. Обработка сообщений в MFC. Включение макрокоманд в карту сообщений. Типы сообщений. Включение обработчиков сообщений в описание класса.

51. С++. Библиотека классов MFC. Иерархия классов. Базовый класс CObject.

53. С++. Библиотеки динамической компоновки DLL. Динамические библиотеки и библиотеки импорта. Назначение. Технология создания и использования.

49. С++. Интерфейс прикладного программирования Win 32 API. Каркас приложения. Функция окна. Цикл сообщений . Класс окна.

54. С++. Расширенные библиотеки DLL. Функция DllMain. Ресурсные DLL. Экспортирование функций и классов.

50. С++. Создание главного окна приложения. Регистрация класса окна. Обработка сообщений. Основные типы оконных сообщений Windows.

41. Создание отчетов Crystal Reports.NET. Pull и Push.

16. Стандартные диалоговые окна. ColorDialog, FontDialog.

15. Стандартные диалоговые окна. OpenFileDialog, SaveFileDialog.

1. Технология разработки программного обеспечения

18. Файловый и потоковый ввод-вывод. BineryReader, BineryWriter

17. Файловый и потоковый ввод-вывод. Directory, DirctoryInfo.

 



Последнее изменение этой страницы: 2016-08-14; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 35.170.64.36 (0.051 с.)