Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






ASCII та Unicode.






В зв'язку з необхідністю локалізації (англ. localization) програмного забезпечення постає питання відповідного кодування рядкових даних. Локалізація програмного продукту– приведення програмного продукту у відповідність із законами та іншими нормативно-пра­вовими актами, стандартами, нормами і правилами, що діють у певній країні. Локалізація передбачає переклад і адаптацію елементів інтерфейсу, допоміжних файлів та документації.

Текстові елементи Win32 API зазвичай представляються у трьох форматах:

· ВерсіяANSI (типи CHARабо char);

· Версія Unicode (типи WCHARабо wchar_t);

· Узагальненаверсія (тип TCHAR).

Версія ANSI представлена відомим символьним набором ASCII або Latin-1. Усі рядки в Unicode представлені 16-бітними значеннями, що дає можливість представити символи більшості мов світу. Починаючи із Windows2000, усі системні виклики із текстовими параметрами очікують Unicode. Навіть якщо задати параметри в ASCII, вони будуть автоматично перетворені в Unicode при виконанні функції.

Якщо планується поставляти програму в різних кодуваннях, не обов’язково писати два різних коди. Можна створювати універсальні програми із використанням узагальнених типів рядкових даних, які компілюються вANSIабоUnicode. Узагальненим типом даних у windows виступає TCHAR (і відповідно LPTSTR, LPCTSTR).

Для підтримки розширеного кодування Unicode в усі модулі програми включають визначення:

#define UNICODE // длятипів Windows

#define _UNICODE // длятипів C

#include< windows.h>

Символьні буфери у програмі визначають, вказуючи кількість символів, а не байтів. Для цього підходить функція sizeof() (наприклад, sizeof(szBuffer) або sizeof(TCHAR)).

Якщо передбачається викликати функції для обробки узагальнених рядків, після windows.hвключають заголовковий файл TChar.hзамість String.h. Звичайні рядкові функції замінюють на відповідні узагальнені:

printf() ® _tprintf()

sprintf() ® _stprintf()

strlen() ® _tcslen()

itoa() ® _itot()

Рядкові константитакож можуть бути трьох типів:

" This string uses 8-bit characters" ASCII

L" This string uses 16-bit characters" Unicode

_T (" This string uses generic haracters") Generic

3.5 Узагальнена функція main

Позначення С-функції main з її списком аргументів (argv []) слід замінити макросом _tmain. Залежно від визначення символічної константи _UNICODE макрос розгортається або до main, або до wmain. _tmain визначається в заголовному файлі, який слід включати після файлу. Тоді типовий заголовок основної програми буде мати наступний вигляд:

#include< windows.h>
#include
int _tmain (int argc, LPTSTR argv []) {
...
}
У Microsoft З функція _tmain підтримує додатковий третій параметр, який використовується для рядків оточення. Таке нестандартне розширення є звичайним в UNIX.

 

4.1 Прикладний програмний інтерфейс Windows (Windows API)

Операційна система WindowsNT не дозволяє прикладним програмам звертатись до апаратних ресурсів системи. Звичайно ж, Windows має власний набір внутрішніх функцій (як у DOS чи BIOS), але вони не публікуються, і можуть змінюватися від версії до версії. Натомість Microsoft визначила набір функціональних викликів, через які програми користувача одержують доступ до системних ресурсів. Ці виклики одержали назву прикладного програмного інтерфейсу (ApplicationProgrammingInterface, API або Win32 API). Ці виклики детально задокументовані і опубліковані. Вони являють собою бібліотечні процедури, які виконують системні функції в режимі ядра або в просторі користувача.

Опубліковані функції Win32 API не змінюються, лише доповнюються новими функціями. Це дає можливість виконувати програми написані для різних операційних системах, наприклад, Windows 9X (95, 98, Me), WindowsNT (2000, XP, 2003 та ін.), WindowsCE (palmtops, вбудовані системи та ін.). Win32-програми можуть також виконуватись в середовищі Win64.

4.2 Категорії функцій WinAPI.

Windows API містить буквально тисячі функцій, які умовно можна поділити на кілька основних категорій:

· базові сервіси (Base Services);

· сервіси компонентів (Component Services);

· інтерфейс користувача (User Interface);

· інтерфейс графічних пристроїв (GraphicsDeviceInterface);

· мережеві сервіси (Networking);

· повідомлення та співпраця (Messaging and Collaboration);

· мультимедійні сервіси (MultimediaServices);

· Web-сервіси (WebServices).

4.3 Довідкова система Windows API.

Основні сервіси забезпечують доступ до фундаментальних ресурсів Windows. Вони включають файлові системи, пристрої, процеси, нитки, реєстр та обробку помилок.

Сервіси компонентів надають засоби для створення додатків, що можуть взаємодіяти між собою на основі COM-технології (MicrosoftComponentObjectModel). COM – це основна технологія для OLE таActiveX (Internet-enabledcomponents). COM-додатки мають задокументований і опублікований в системі інтерфейс, через який можна працювати з об'єктами цих додатків. Прикладом можуть бути компоненти Delphi – сервери Word, Excel, PowerPointі т.д. На жаль, вони практично не задокументовані.

Win API - це набір функцій, що надаються операційною системою кожній програмі. Ці функції знаходяться в стандартних динамічних бібліотеках (DynamicLinkedLibrary, DLL), таких як kernel32.dll, user32.dll, gdi32.dll. Ці файли знаходяться в директорії Window \\ System. Взагалі кажучи, кожна програма повинна самостійно дбає про те, щоб підключити ці бібліотеки. DLL можуть підключатися до програми статично і динамічно. У першому випадку програма «звільняє» DLL тільки при завершенні, у другому звільнення може відбутися в будь-який момент. Якщо після звільнення DLL виявляється, що її більше не використовує жодна програма, вона вивантажується з пам'яті. Так як стандартні бібліотеки використовуються самою системою, вони завжди знаходяться в пам'яті, і тому використання динамічного підключення безглуздо.

5.1 Принцип дії консолі Windows.

Microsoft Management Console, MMC (консоль управління Microsoft) - компонент операційної системи Windows 2000 і пізніших версій Windows. Дозволяє системним адміністраторам і досвідченим користувачам за допомогою гнучкого інтерфейсу конфігурувати і відстежувати роботу системи.
Консоль управління надає більш широкі можливості для управління комп'ютером. Основний принцип дії полягає в оснащеннях - невеликих програмах, що дозволяють налаштувати різні аспекти операційної системи. Також з консолі управління можна отримати розширені функції управління користувачами і групами, в ній можна налаштувати безліч параметрів (наприклад, заголовок вікон Internet Explorer). Більш широким вбудованим інструментом управління Windows є Редактор реєстру.

5.3 Створення та настройка консолі.

При запуску процесу символьного режиму MSWindowsстворює нову консоль. Якщо запускати свій додаток із командного рядка, то він буде викор. «чужу» консоль. Для створення своєї потрібно від’єднатися від чужої і створити свою. Функції:

BOOLFreeConsole(Void) – від’єднання. BOOLAllocConsole(Void) – виділяє нову консоль.Для роботи із консоллю потрібно отримати її дескриптор – HANDLE GetStdHandle (DWORDnStdHandle); - StdHandle визначає пристрій, для якого одержують дескриптор – STD_INPUT_HANDLE, STD_OUTPUT_HANDLE або STD_ERROR_HANDLE. Після цього всі операції з консоллю здійснюють через її дескриптор. Якщо ф-ціязаверш фатально, то вона повертає INVALID_HANDLE_VALUE.

Для настройки параметрів консолі викор. Різні функції: GetConsoleTitle(), SetConsoleTitle(), setConsoleMode(), SetConsoleCursorPosition(), SetConsoleTextAttribute(). Для закриття викор. Консолі викор. ФціюFreeConsole.

5.2 Вхідний та екранні буфери

Екран і клавіатура є текстами, зв’ язаними з файловими змінними output і input. Для роботи з ними також уживаються буфери.

Спочатку розглянемо екран. З ним зв’ язаний буфер, але символи, потрапивши в нього, одразу копіюються на екран. Якби цього не було, інформація на екрані з’ являлася би з небажаними затримками.

При виконанні процедури WRITE за значенням її кожного аргумента обчислюється стала, тобто послідовність символів, які через буфер одразу виводяться на екран.

Організація роботи з клавіатурою набагато складніше. Символи, утворені натисканням клавіш, накопичуються в буфері клавіатури. Він уміщає 15 символів. У цьому можна переконатися, запустивши програму

За її виконання комп’ ютер починає чекати натискань на клавіші. Кожне натискання на клавішу (крім Enter) приводить до появи відповідного символу в буфері клавіатури. Цей символ одразу переноситься в її внутрішній буфер та через екранний буфер без затримки відображається на екрані. Після того, як набрано 128 символів, наступний символ до внутрішнього буфера не переноситься й на екрані не з’ являється. Натомість можна почути звуковий сигнал, що свідчить про переповнення внутрішнього буфера.

Натискання на клавішу Enter веде до появи відповідного символу в буфері клавіатури та переведення курсора в новий рядок екрана. Коли цей символ з’ являється у внутрішньому буфері, рядок у ньому розглядається як " завершений символом eol ".

Завершений рядок у внутрішньому буфері аналізується й за сталими в ньому обчислюються значення базових типів та присвоюються змінним, указаним у виклику read (readln). Якщо сталих менше, ніж змінних у виклику, то виконання продовжується, тобто внутрішній буфер спорожнюється та починається чекання нових символів із клавіатури.

 

 

5.4 Низькорівневі та високорівневі функції WinAPI для роботи з консоллю.

Високорівневі вхідні функції фільтрують вміст вхідного буфера і повертають лише потік символів з клавіатури, відкидаючи службову інформацію і інші події. Високорівневі функції виведення записають потік символів у буфер екрану, які відображаються в поточному разташуванні курсора.

Високорівневі функції ReadFile, WriteFile, ReadConsole і WriteConsole надають непрямий доступ до вхідного і екранного буферів. ReadConsole і WriteConsole оперують текстовими рядками. При підготовці текст. Рядків корисною є функція wsprintf.

Низькорівневі функції вводу забезпечують прямий доступ до вхідного буфера і дають можливість додаткам отримувати детальні дані про події клавіатури і миші, а також про події, що визначають взаємодію користувача із вікном консолі.

Низькорівневі функції вводу: ReadConsoleInput – читає і видаляє записи із вхідного буфера.

PeekConsoleInput – читає і не видаляє записи із вхідного буфера.

WriteConsoleInput – розміщує записи у вхідному буфері позаду наявних записів.

Низькорівневі функції виводу: вони надають прямий доступ до символьних комірок буфера екрану. Ці функції читають або записують до вказаної послідовності символьних комірок в буферіекрану, починаючи із вказаної.

ReadConsoleOutputCharacter (копією рядок символів із буфера екрану), WriteConsoleOutputCharacter(записує рядок до буфера екрану), FillConsoleOutputCharacter(записує символ до вказаної послідовності комірок в буфері екрану),

При викор. Низькорівн. Функцій доводиться писати більше коду і вибирати із більшого діапазону функцій, проте це дає більшої гнучкості.

 

7.1Елементи вікна Windows.

Рядок заголовка – верхній елемент вікна, який містить кнопку Меню вікна(емблема програми, при натисненні на яку відкриваються команди керування вікном), назву вікна та кнопки керування вікном: Згорнути, Розгорнути/ Відновити, Закрити.
За допомогою кнопок керування вікном можна змінювати режими відображення вікон – повноекранний та віконний.

Рядок меню (Головне меню) – містить список команд, які можна виконувати над об’єктами у вікні.

Панелі інструментів – відображають кнопки найбільш уживаних команд.

Робоча область – область в якій можна працювати з об’єктами вікна.

Підлеглі вікна – вікна, що містяться в середині основного вікна.

Рядок стану – нижній елемент вікна, який містить інформацію про стан вікна чи якогось об’єкта в ньому.

Смуги прокручування – призначені для перегляду вмісту всього вікна, якщо він не поміщається на екрані.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.