6. Разработка с помощью WinApi.ppt
- Количество слайдов: 20
Разработка с помощью Win. Api Бестужев Никита Евгеньевич Преподаватель
Содержание лекции Базовые концепции 2. Функции Windows API 1. 2
Базовые концепции Некоторые особенности ОС Windows: • Графический интерфейс пользователя • Многозадачность • Управление памятью • Независимость от аппаратных средств 3
Базовые концепции Графический интерфейс пользователя: Graphical User Interface (GUI) дает возможность пользователям работать с приложениями максимально удобным способом. 4
Базовые концепции Многозадачность: 5
Базовые концепции Управление памятью: Память – это один из важнейших разделяемых ресурсов в операционной системе. Если одновременно запущены несколько приложений, то они должны разделять память, не выходя за пределы выделенного адресного пространства. 6
Базовые концепции Независимость от аппаратных средств: Приложения, написанные с использованием Win 32 API, будут работать с любым типом дисплея и любым типом принтера, для которых имеется в наличии драйвер Windows. To же самое относится и к устройствам ввода данных – клавиатуре, манипулятору «мышь» и т. д. 7
Базовые концепции Вызовы функций и DLL: Win 32 API поддерживает вызовы свыше двух тысяч функций, которые можно использовать в приложениях. Вызовы функций Win 32 API в программе осуществляются аналогично вызовам библиотечных функций C/C++, но их связывание осуществляется только на этапе выполнения программы. 8
Базовые концепции ООП: Независимо от своего типа, любой объект в Windows идентифицируется своим дескриптором, или описателем. Оба этих названия являются переводом английского термина handle. Дескриптор – это своего рода ссылка на объект. Все взаимоотношения программного кода с объектом осуществляются только через его дескриптор. 9
Базовые концепции Типы данных Win 32: 10
Базовые концепции Архитектура, управляемая событиями: В основе взаимодействия программы с внешним миром и с операционной системой лежит концепция сообщений. Сообщение – это структура данных, содержащая следующие элементы: дескриптор окна, которому адресовано сообщение; код (номер) сообщения; дополнительную информацию, зависящую от кода сообщения. 11
Функции Windows API Использование неуправляемого кода: Управляемый код. NET Framework может вызывать неуправляемую функцию из DLL (функцию Windows API) при помощи специального механизма Platform Invoke (сокр. P/Invoke). За управление P/Invoke отвечает пространство имен System. Runtime. Interop. Services. 12
Функции Windows API 13
Функции Windows API Пример функции Windows API: using System. Runtime. Interop. Services; public class Win 32 { [Dll. Import("user 32. dll")] public static extern void Set. Window. Text(Int. Ptr hwnd, String lp. String); } 14
Функции Windows API, имеющие выходной строковый параметр char*: using System. Text; // для String. Builder [Dll. Import("user 32. dll")] public static extern int Get. Window. Text(Int. Ptr hwnd, String. Builder buf, int n. Max. Count); String. Builder s. Title. Bar = new String. Builder(255); Get. Window. Text(this. Handle, s. Title. Bar. Capacity); Message. Box. Show(s. Title. Bar. To. String()); 15
Функции Windows API, требующие struct: [Struct. Layout(Layout. Kind. Sequential)] public struct RECT { public int left; public int top; public int right; public int bottom; } [Dlllmport("user 32. dll")] public static extern int Get. Window. Rect(Int. Ptr hwnd, ref RECT rc); 16
Функции Windows API, требующие struct: int w, h; RECT rc = new RECT(); Getwindow. Rect(this. Handle, ref rc); w = rc. right - rc. left; h = rc. bottom - rc. top; Message. Box. Show("Ширина формы: " + w + "nr. Высота формы: " + h); 17
Функции Windows API Установка обоев рабочего стола: [Dll. Import("user 32. dll", Char. Set = Char. Set. Auto)] static extern int System. Parameters. Info(int u. Action, int u. Param, string lpv. Param, int fu. Win. Ini); … // Установка обоев рабочего стола string image. File. Name = @"C: mycat. bmp"; Registry. Key key = Registry. Current. User. Open. Sub. Key("Control Panel\Desktop", true); key. Set. Value(@"Wallpaper. Style", "1"); //Установка по центру key. Set. Value(@"Tile. Wallpaper", "0") ; System. Parameters. Info(SPI_SETDESKWALLPAPER, 0, image. File. Name, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE); 18
Функции Windows API Копирование файла: [Dll. Import("kernel 32. dll")] static extern bool Copy. File(string lp. Existing. File. Name, string lp. New. File. Name, bool b. Fail. If. Exists); … // Копирование файла Copy. File( @"C: Source. txt" , @"C: Destination. txt" , true ); 19
Спасибо за внимание! 20
6. Разработка с помощью WinApi.ppt