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

Соглашения о вызовах

Читайте также:
  1. Когда и почему начался активный поворот в сторону реального разоружения. Какие основные соглашения были заключены по этому направлению
  2. Локарнские соглашения
  3. Предмет соглашения. Права и обязанности сторон.
  4. Проблемы ближневосточн. Урегулир-ия 1960-70-е гг. Кэмп-Дэвидские соглашения.
  5. Разрядка международной напряжённости в нач. 1970-х. Сов-амер соглашения.
  6. Соглашения
При объявлении процедур и функций в динамических библиотеках используются различные соглашения о вызовах. Дело в том, что различные языки программирования по-разному реализуют передачу параметров в процедуру (через стек или регистры). Порядок следования параметров в стеке как раз определяется соглашением о вызовах. Стандартный вызов в языках C++ и Object Pascal различается, но набор директив смены типа вызова позволяет обеспечить любую реализацию. Во всех соглашениях о вызовах вызывающая процедура помещает параметры в стек. В зависимости от типа соглашения, очистка стека осуществляется вызывающей или вызываемой процедурой. Если очистка стека выполняется вызывающей процедурой, то она успевает забрать из него возвращаемые значения. Если очистка стека осуществляется вызываемой процедурой, то перед этим она помещает возвращаемые значения во временную область памяти. Помимо рассмотренных ниже директив имеются еще три типа вызовов, которые не используются и сохранены для обеспечения обратной совместимости. Это директивы near, far, export. Директива register Эта директива используется по умолчанию. Поэтому нет необходимости добавлять ключевое слов register после объявления функции. Вызов такого типа называется быстрым (fast call). В нем используются три расширенных регистра процессора, в которые помещаются переменные длиной не более 32-х разрядов и указатели. Остальные параметры помещаются в стек слева направо. После использования стек очищается вызываемой процедурой. Директива pascal Реализует вызовы в стиле языка Pascal. За очистку стека отвечает вызываемая процедура. Параметры помещаются в стек слева направо. Этот способ вызова является очень быстрым, но не поддерживает переменное число параметров. Используется для обеспечения обратной совместимости. Директива stdcall Параметры помещаются в стек слева направо. Очистка стека осуществляется вызываемой процедурой. Этот вызов обеспечивает обработку фиксированного числа параметров. Директива cdecl Реализует вызовы в стиле языка С. Параметры в стек помещаются справа налево. Очистка стека осуществляется вызывающей процедурой. Такие вызовы обеспечивают обслуживание переменного числа параметров, но скорость обработки меньше, чем в вызовах при реализации директивы pascal. Эта директива в основном применяется для обращения к динамическим библиотекам, использующим соглашения о вызовах в стиле языка С. Использование директивы cdecl для библиотек Delphi не вызовет ошибку компиляции, но переменное число параметров не обеспечит. Директива safecall Параметры помещаются в стек справа налево. Очистка стека осуществляется вызываемой процедурой. Используется в СОМ и основанных на ней технологиях. windows.h является Windows-конкретный файл заголовков для языка C программирования, который содержит заявления для всех функций в Windows API, все общие макросы, которые используются программистами окон, и все типы данных, используемых различными функциями и подсистем. Он определяет большое количество окон конкретные функции, которые могут быть использованы в С. Win32 API могут быть добавлены в проект программирования C, включив <windows.h> заголовка файла и ссылки на соответствующие библиотеки. Для использования функции в XXXX. DLL, программа должна быть увязана с XXXX. Lib (или Lib XXXX. В MinGW). Некоторые заголовки не связаны с расширением. DLL, но при статической библиотеки (например, scrnsave.h scrnsave.lib потребности). Есть несколько файлов ребенка заголовок, который автоматически входит в windows.h. Многие из этих файлов не может быть просто включен сами по себе, из-за зависимостей. windows.h может включать любую из следующих файлов заголовок: excpt.h - Обработка исключений stdarg.h - переменная аргумент функции (стандартный заголовок C) windef.h - различные макросы и типы winnt.h - различные макросы и типы (для Windows NT) basetsd.h - различные типы guiddef.h - тип GUID ctype.h - характер классификации (стандартный заголовок C) string.h - строк и буферов (стандартный заголовок C) winbase.h - Kernel32.dll: ядро услуги Winerror.h - коды ошибок Windows WINGDI.H - GDI (Graphics Device Interface) WINUSER.H - user32.dll: пользователь услугами winnls.h - NLS (Native Language Support) wincon.h - консоль услуги winver.h - информация о версии winreg.h - реестр Windows winnetwk.h - Wnet (Windows Networking) Winsvc.h - Windows Services и SCM (Service Control Manager) imm.h - IME (редактор метода ввода) Дополнительная включает в себя: cderr.h - CommDlgExtendedError кодов функция ошибок commdlg.h - общих диалоговых окон dde.h - DDE (Dynamic Data Exchange) ddeml.h - DDE Управление библиотека dlgs.h - различные константы для общих диалоговых окон lzexpand.h - LZ (Зив-Зива) компрессии / декомпрессии mmsystem.h - Windows Multimedia nb30.h - NetBIOS rpc.h - RPC (Remote Procedure Call) shellapi.h - оболочки Windows API wincrypt.h - Cryptographic API winperf.h - мониторинг эффективности winresrc.h - используется в ресурсах winsock.h - Winsock (Windows Sockets), версия 1.1 winsock2.h - Winsock (Windows Sockets), версия 2 winspool.h - Диспетчер очереди печати OLE и COM: ole2.h - OLE (Object Linking и вложение) objbase.h - COM (Component Object Model) oleauto.h - OLE Automation olectlid.h - различные GUID определений [Править] Макросы Несколько макросов влияют на поведение windows.h. UNICODE - определить, когда это приводит к TCHAR быть синонимом WCHAR вместо CHAR, и все тип-родовых функций API и сообщений, работа с текстом будет определен-З версиях вместо-версии. (Это похоже на Windows _UNICODE макроса C Runtime's.) RC_INVOKED - определить, когда ресурс компилятора (Rc.exe) используется вместо компилятора C. WINVER - используется для включения функций доступны только в более новых операционных систем. Определить ее 0x0501 для Windows XP, и 0x0600 для Windows Vista. WIN32_LEAN_AND_MEAN - используется для уменьшения размера файлов заголовков и ускорить компиляцию. За исключением вещей, как криптография, DDE, RPC, Windows Shell и Winsock. 68. Инструментальные средства Visual C++. Необходимость файла проекта. Создание ресурсов. Использование редакторов ресурсов. Создание значков, курсоров и растровых изображений. Создание значка и курсора. Как проектировать меню. Работа меню.

69. Инструментальные средства Visual C++. Проектирование меню. Меню и компилятор ресурсов. Ключевые слова и параметры меню. Быстрые клавиши. Как вводить данные при помощи окон диалога. Принципы построения окон диалога.

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

этому он часто упоминается как "RC-файл". Ресурс – это некоторый массив числовых данных, описывающих, например, меню или пиктограмму. Windows поддерживает ресурсы нескольких типов, в том числе меню, пиктограммы, растровые изображения и строки. Специальная программа, компилятор ресурсов (входит в состав Visual C++), компилирует текстовое содержимое RC-файла в двоичный вид. Затем компоновщик присоединяет эти данные к исполняемому EXE-файлу приложения. Каждому ресурсу в качестве идентификатора присвоена строка или число, например, "MyMenu" (строка) или IDR_MYMENU (целое число). Целочисленным идентификаторам даются более понятные человеку имена-константы, например, IDR_MYMENU. Эти константы определены директивами #define в заголовочном файле. После того, как ресурсу скомпилированы и скомпонованы с EXE-файлом приложения, их можно загружать специальными функциями API или MFC.

Подобные описания редко формируются вручную, обычно ресурсы создаются с помощью специальных редакторов ресурсов (в Visual C++ он встроен в среду разработки).

Фрагмент исходного текста 6.1. Часть описания шаблона меню.

IDR_MAINFRAME MENU PRELOAD DISCARDABLE

BEGIN

POPUP "&Файл"

BEGIN

MENUITEM "Созд&ать\tCtrl+N", ID_FILE_NEW

MENUITEM "&Открыть...\tCtrl+O", ID_FILE_OPEN

MENUITEM "&Сохранить\tCtrl+S", ID_FILE_SAVE

MENUITEM "Сохранить &как...", ID_FILE_SAVE_AS

MENUITEM SEPARATOR

MENUITEM "Последние открывавшиеся файлы", ID_FILE_MRU_FILE1,GRAYED

MENUITEM SEPARATOR

MENUITEM "В&ыход", ID_APP_EXIT

END

POPUP "&Правка"

BEGIN

MENUITEM "&Отменить\tCtrl+Z", ID_EDIT_UNDO

MENUITEM SEPARATOR

...

END

Значения ID_..., указанные после названий пунктов меню – это идентификаторы команд меню. Каждому пункту меню должен быть присвоен уникальный идентификатор команды, чтобы приложение могло среагировать на выбор этого пункта.

По соглашению, эти идентификаторы определяются как числовые константы (через директивы #define), имена которых начинаются с префикса ID_ или IDM_, за которым заглавными английскими буквами указывается имя пункта меню.

В имени пункта меню амперсанд обозначает горячую клавишу для выбора это-

го пункта. После символа табуляции принято (если есть) указывать ускоряющую клавишу (например, Ctrl+O в "&Открыть…\tCtrl+O"). Ускоряющая клавиша – это клавиша или комбинация клавиш, нажатие которой аналогично выбору команды меню.

Ввод данных может выполняться с учетом:

1. выбор из множества

2. ввод строки

3. ввод целых данных

4. ввод данных с плавающей точкой

Для ввода целочисленных значений, необходимых для работы Windows-приложений, может использоваться ДО

IDD_INTEGERINPUT DIALOGEX 6,18,154,85

STYLE DC_SETFONT |DS_MODALFRAME|

WS_POPUP |WS_VISIBLE|WS_CAPTION|

WS_SYSMENU

CAPTION “Integer Entry”

FONT8, “MS Sans Serif”, 0,0,0x0

BEGIN

PUSHBUTTON “Okay”, IDOK, 53,67,40,14

LTEXT “Entry the coordinates for an ellipse:”, IDC_STATIC 11,12,113,8

EDITTEXT

IDD_PERX,76,27,31,12,ES_AUTOHSCKOLL

PUSHBUTTON “CANCEL”, IDCANCEL,99,67,40,14

LTEXT “upper corner

(x,y):”, IDC_STATIC,10,31,63,8

LTEXT “lower corner

(x,y):”, IDC_STATIC,10,47,63,8

EDITTEXT

IDD_UPPERY,108,27,31,12,ES_ AUTOHSCKOLL

EDITTEXT

IDD_LOWERX,75,43,31,12,ES_ AUTOHSCKOLL

EDITTEXT

IDD_LOWERY,108,43,31,12,ES_ AUTOHSCKOLL

EDITTEXT

 

70. Инструментальные средства Visual C++. Редактирование окон диалога. Использование редактора. Средства редактирования. Создание управляющих элементов при помощи панели инструментов.

Редактирование диалоговых окон (ДО) VS делает возможным подготовку ДО 2 способами:

1. исходный файл готовится как текстовый

1: IDD_ABOUTBOXDIALOGEX 6, 18, 160, 100

2: STYLE DS_SETFONT |DS_MODALFRAME|

3: WS_POPUP |WS_VISIBLE|WS_CAPTION|

4: WS_SUSMENU

5: CAPTION “AboutBox”

6: FONT 8, “MS Sans Serif”, 0,0,0x0

7: BEGIN

8: CTEXT “Text/Integer Entry Box”, - 1,34,10,91,8

9: CTEXT “by”, - 1,61,25,32,8

10: CTEXT “Beloded N”, - 1,38,42,86,8

11: PUSHBUTTON “Okay”, IDOK, 58,80,40,14

12: END

1.Последние 4 числа определяют местоположение ДО на экране. Первые 2 числа определяют верхний левый угол, а последние – правый нижний угол

2.STYLE определяет опции, предъявляемые к окну

5. Заголовок ДО “AboutBox”

6. Все опции использования шрифта

7, 12. структурные операторы

8. CTEXT – опция, определяющая расположение текста

11. В окне используется кнопка с надписью “Okay”. Идентификатор IDOK.

 

2. графический

Для второго способа используется стандартный набор элементов управления. Оба варианта взаимосвязаны и перекомпилируются.

ДО записывается в файл ресурсв RC и при компиляции кодов файл ресурсов компилируется и результат FILE.reg.

Стандартного набора элементов управления хватает для подготовки профессиональных приложений. Весь инстрмент отображается в ДО. Этот список инструментов может быть расширен за счет элемента ActivX или элементов пользователя, бизнес элементов, специальных элементов.

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

Элемент управления (ЭУ) – это дочернее окно специального типа, обычно

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

простое действие (например, выполнить команду). В результате этого действия элемент управления посылает окну-владельцу сообщение. Например, у нажимаемой кнопки есть единственная простая функция – когда пользователь нажимает кнопку, то она посылает своему родительскому окну (диалоговому окну) сообщение WM_COMMAND. Чаще всего ЭУ встречаются в диалоговых окнах, но их можно использовать и в любых других окнах, в т.ч. в окнах верхнего уровня.

 

Наиболее часто применяемые элементы управления:

Флажок. Флаг может иметь 2 состояния: false и true. Применяется для множественного выбора.

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

Кнопка. Содержит в себе подпись, идентификатор кнопки, обрабатываемое событие.

Поле группы. Сама группа имеет идентификатор. Значение элементов группы по умолчанию устанавливается по порядку создания 0, 1, 2, 3. Эти значения м.б. изменены пользователем.

Список. Делает возможным выбор из множества значений. Исходные данные м.б. инициализированы, сформированы в процессе работы программы, определены из файла.

Достоинства использования элементов управления:

1. М.б. использовано несколько значений из списка

2. уменьшает вероятность возникновения ошибки

Окно редактирования. Неотъемлемая часть ДО. Делает возможным ввод, редактирование или отображение данных.

Пиктограмма. Размещение рисунка в ДО


Дата добавления: 2015-09-03; просмотров: 91 | Нарушение авторских прав


Читайте в этой же книге: Сортировка. | Специальный класс string ( в методичках Белодеда по-другому, поэтому это только для ознакомления и на всякий случай) | Математические функции (math.h). Построение таблицы значений тригонометрических функций. | Интерфейс вызовов функций в Windows | Общие принципы и средства программирования для Windows. Графический интерфейс пользователя. Многозадачная среда. Преимущества ввода посредством очереди. | Преимущества ввода посредством очереди. | Окна в Windows | Элементы интерфейса Windows | Значок (пиктограмма) | Выбор семейств шрифтов. Окна сообщений Windows. Окна диалога Windows. Шрифты Windows. Растровые изображения Windows. Перья Windows. Кисти Windows. |
<== предыдущая страница | следующая страница ==>
Выбор семейств шрифтов. Прием и передача сообщений Windows. Формат сообщения Windows. Как создаются сообщения Windows. Ответ на сообщение Windows. Цикл обработки сообщений.| Стандартные элементы управления

mybiblioteka.su - 2015-2024 год. (0.016 сек.)