Содержание
- 2. Болтов, Юрий Федорович. Операционные системы : учеб. пособие (спец. 230102, 230105) : в 2 ч. /
- 3. Олифер, Виктор Григорьевич.Сетевые операционные системы / В. Г. Олифер, Н. А. Олифер. - СПб. : Питер,
- 4. Подготовка к системному программированию Visual Studio Professional 2013 (или Ultimate-версия): http://msdn.microsoft.com/en-US/windows/hardware/gg454513 Windows Software Development Kit –
- 5. Лакман Макдауэлл Г. Карьера программиста. 6-е изд. — СПб.: Питер, 2016. — 688 с.: ил. —
- 6. Основы программирования для ОС Windows При разработке приложений в Visual C++ множество основных способов разработки программ:
- 7. Основы программирования для ОС Windows Способы разработки приложений в среде Visual C++
- 8. Основы программирования для ОС Windows Программирование, управляемое событиями Традиционные программы организованы иерархическим образом. Например, в языке
- 9. Архитектура, управляемая событиями В основе взаимодействия программы с внешним миром и с операционной системой лежит концепция
- 10. Архитектура, управляемая событиями Сообщение - это структура данных, содержащая следующие элементы: дескриптор окна, которому адресовано сообщение;
- 11. Архитектура, управляемая событиями Сообщения от внешних источников, например от клавиатуры, адресуются в каждый конкретный момент времени
- 12. Основы программирования для ОС Windows Структура Windows-приложения
- 13. Основы программирования для ОС Windows Генерация аппаратных событий На аппаратном уровне каждое устройство ввода Windows управляется
- 14. Основы программирования для ОС Windows Назначение сообщений Сообщения – это стандартный механизм связи внутри программ Источники
- 15. Основы программирования для ОС Windows Назначение сообщений Сообщения Windows идентифицируются мнемоническими идентификаторами, которые соответствуют целочисленным константам.
- 16. Основы программирования для ОС Windows Назначение сообщений typedef struct tagMSG { // msg HWND hwnd; UINT
- 17. Основные понятия. Элементы окна Пиктограмма панели заголовка Текст панели заголовка Панель меню Панель инструментов Клиентская область
- 18. Интерфейс Windows API Разработчиками ОС Windows была создана библиотека функций, при помощи которых происходит взаимодействие приложения
- 19. Интерфейс Windows API Структура Windows-программы
- 20. Структура Windows-приложения
- 21. Каркас Windows-приложения Определить класс окна. Зарегистрировать окно. 3. Создать окно данного класса. 4. Отобразить окно. 5.
- 22. Каркас Win32 приложения Основу программы в Win32 составляет функция WinMain, которая «заменяет» собой стандартную функцию main
- 23. Каркас Win32 приложения Параметры функции WinMain: HINSTANCE hInstance – идентификатор текущего приложения; HINSTANCE hPrevInstance – идентификатор
- 24. Каркас Win32 приложения НАЧАЛО Описание класса окна Регистрация класса окна Создание окна Отображение окна Ожидание, прием
- 25. Каркас Win32 приложения Для описания класса окна необходимо заполнить структуру типа WNDCLASSEX или WNDCLASS (старый вариант).
- 26. Каркас Win32 приложения После заполнения всех полей данной структуры класса окна необходимо зарегистрировать с помощью функции
- 27. Каркас Win32 приложения После успешной регистрации класса окна необходимо создать само окно. Это осуществляется с помощью
- 28. Каркас Win32 приложения В случае успешного выполнения функция CreateWindow возвращает дескриптор созданного окна. В случае ошибки
- 29. Каркас Win32 приложения После того, как окно успешно создано, его необходимо отобразить используя функции ShowWindow и
- 30. Каркас Win32 приложения После создания и отображения окна необходимо организовать цикл получения и обработки сообщений. Для
- 31. Каркас Win32 приложения Функция получения сообщения BOOL GetMessage( LPMSG lpMsg, //Указатель на структуру MSG HWND hWnd,
- 32. Каркас Win32 приложения Функция преобразования сообщения виртуальных клавиш в символьные сообщения BOOL TranslateMessage(const MSG *lpMsg );
- 33. Каркас Win32 приложения Функция обработки сообщения LRESULT DispatchMessage(const MSG *lpmsg ); Функция вызывает функцию-обработчик сообщений для
- 34. Типовая функция WinMain int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG
- 35. Функция-обработчик сообщений Прототип функции: LRESULT CALLBACK WndProc( HWND hwnd, //Дескриптор окна UINT message, //Код сообщения WPARAM
- 36. Типовой алгоритм функции WndProc LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch(message){
- 37. Некоторые сообщения
- 38. Дополнительные функции Функция определения существования окна BOOL IsWindow(HWND hwnd); Функция проверки наличия фокуса ввода у окна
- 39. Дополнительные функции Функция перемещения окна BOOL MoveWindow(HWND hwnd, int x, int y, int nWidth, int nHeight,
- 40. Дополнительные функции Вывод окна на передний план и передача ему управления: BOOL SetForegroundWindow(HWND hwnd); Функция получения
- 41. Дополнительные функции Функция получения параметров окна: BOOL GetWindowRect(HWND hwnd, LPRECT rect); Функция получения параметров рабочей области
- 42. Окно сообщения Вызов окна сообщения осуществляется с помощью функции: int WINAPI MessageBox( HWND hwnd, //Дескриптор окна
- 43. Окно сообщения
- 44. Окно сообщения
- 45. Интерфейс Windows API Функция WinMain() выполняет четыре основные функции: - сообщает ОС, какого вида окно требуется
- 46. Интерфейс Windows API Функция WinMain() После того как Windows загружает программу, то она вызывает функцию WinMain.
- 47. Интерфейс Windows API Функция WindowProc() Функция WndProc() является «функцией обратного вызова». Такие функции вызываются операционной системой,
- 48. Интерфейс Windows API LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId,
- 49. Интерфейс Windows API Передача сообщений while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); }
- 50. Интерфейс Windows API case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // TODO: добавьте любой код отрисовки... GetClientRect(hWnd,&rect);
- 51. Библиотеки динамической компоновки DLL Одной из особенностей Windows-приложений является их способность подключать во время работы необходимые
- 52. Создание DLL Создание проекта библиотеки DLL в Visual Studio 1. В строке меню выберите Файл >
- 53. После создания решения созданный проект вместе с исходными файлами отобразится в окне обозревателя решений в Visual
- 54. Добавление файла заголовка в библиотеку DLL 1. Чтобы создать файл заголовка для функций, последовательно щелкните Проект
- 55. 3. Нажмите кнопку Добавить, чтобы создать пустой файл заголовка, который отображается в новом окне редактора.
- 56. 4. Замените все содержимое этого файла заголовка следующим кодом: // Special case when index == 0,
- 57. Добавление реализации в библиотеку DLL В обозревателе решений щелкните узел Файлы решения правой кнопкой мыши и
- 58. 1>------ Build started: Project: MathLibrary, Configuration: Debug Win32 ------ 1>pch.cpp 1>dllmain.cpp 1>MathLibrary.cpp 1>Generating Code... 1> Creating
- 59. Создание клиентского приложения, которое использует библиотеку DLL Библиотека DLL предоставляет эти сведения в библиотеке импорта —
- 60. Создание клиентского приложения в Visual Studio 1. В строке меню выберите Файл > Создать > Проект,
- 61. Добавление заголовка библиотеки DLL в путь включения 1. Щелкните правой кнопкой мыши узел MathClient в обозревателе
- 62. Теперь можно добавить файл MathLibrary.h и использовать функции, которые он объявляет, в вашем клиентском приложении. Замените
- 63. Чтобы устранить эту проблему, можно скопировать файл библиотеки непосредственно в проект клиентского приложения. Компоновщик сможет найти
- 64. Добавление библиотеки импорта DLL в проект 1. Щелкните правой кнопкой мыши узел MathClient в обозревателе решений
- 65. 5. Нажмите кнопку OK, чтобы вернуться в диалоговое окно Страницы свойств. 6. В области слева выберите
- 66. ![Ошибка "Библиотека DLL MathLibrary не найдена"](media/mathclient-system-error-mathlibrary-dll-not-found.png "Ошибка "Библиотека DLL MathLibrary не найдена"") Чтобы избежать этой проблемы,
- 67. Копирование библиотеки DLL в событие после сборки 1. Щелкните правой кнопкой мыши узел MathClient в обозревателе
- 68. Теперь в вашем клиентском приложении есть все, что нужно для сборки и запуска. Соберите приложение, щелкнув
- 69. Использование DLL Практически невозможно создать приложение Windows, в котором не использовались бы библиотеки DLL. В DLL
- 70. Существует два способа использования DLL-библиотек: неявное (implicit linking) и явное (explicit linking) связывание. Неявное связывание Неявное
- 71. DLL общего использования Созданная нами DLL-библиотека работает с программами, написанными на языке С++. Если же попытаться
- 72. Явная загрузка DLL Неявное связывание, несмотря на свою очевидную простоту, имеет и определенные недостатки. Основным из
- 73. Загрузка ресурсов из DLL Помимо функций из DLL-библиотеки можно загрузить и ресурсы. Для примера создадим простенькую
- 74. Программный код библиотеки не содержит ни одной функции, а только описание глобальной переменной hIcon, объявленной как
- 75. Два способа загрузки иконки: 1. Создадим проект демонстрационной задачи. В папку этого проекта скопируем созданные файлы
- 76. DLL, содержащие только ресурсы Можно использовать DLL-библиотеку, как контейнер для хранения ресурсов, на-пример: курсоров, иконок и
- 77. Вопросы к главе 1. В чем отличие библиотек динамической компоновки от статических библиотек? 2. Какие действия
- 78. Вопросы, жалобы, предложения? Подготовил к.т.н. Павлович А.А. Спасибо за внимание!
- 80. Скачать презентацию