Главная
 
Ghost Studio Вторник, 14.05.2024, 14:35:39



Приветствую Вас Гость | RSS
Главная
Меню сайта

Категории каталога
Разное [36]
Всякая всячина)))
Программирование графики [3]
Учебник по OpenGL [6]
Программирование под Windows [8]

Наш опрос
Какой мир вам больше нравится?
Всего ответов: 64

Главная » Статьи » Программирование под Windows

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

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

LONG WINAPI lineNegotiateAPIVersion(
HLINEAPP hLineApp,
DWORD dwDeviceID,
DWORD dwAPILowVersion,
DWORD dwAPIHighVersion,
LPDWORD lpdwAPIVersion,
LPLINEEXTENSIONID lpExtensionID
);


Параметры

hLineApp

Хэндл TAPI. Как его получить я рассказал в предыдущей статье.

dwDeviceID

Идентификатор девайса. Устанавливается пользователем. Может иметь значение от нуля до числа меньшего, чем общее количество доступных девайсов (количество это мы получили через параметр dwNumDevs функции lineInitializeEx). В общем, если писать приложение, работающее с одной линией, смело можно устанавливать значение этого параметра равным 0, или от 0 до dwNumDevs-1.

dwAPILowVersion, dwAPIHighVersion

Соответственно самая низкая я самая высокая версии TAPI, которые поддерживает программа.

lpdwAPIVersion

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

lpExtensionID

Указатель на структуру LINEEXTENSIONID. Она нужна для описания идентификатора расширений. Это расширения SP (service provider). Мы не будем трогать эту структуру, ибо сейчас она вам не нужна, а когда станет нужна, вам не понадобятся различные туториалы, сами разберетесь, как я, например...

Ну вот. Вроде описал функцию... Теперь небольшой листинг. Немного дополним наш TAPItest. Теперь он будет уметь ещё и определять версию TAPI. Я не буду приводить листинг из прошлой статьи, буду прописывать только новые строки. Но, т.к. я указываю, в какую секцию писать код, думаю, что всё будет понятно.

; TAPItest.inc

.data
;---здесь всё, что было в ли
;---стинге из предыдущей статьи
;---новый код только добавляется
;--- к старому
dwLowVer dd 00010003h

.data?
dwApiVersion dd ?

; TAPItest.asm

.code
start:

WndProc proc hWin:HWND,uMsg:UINT,
wParam:WPARAM,lParam:LPARAM
LOCAL ExtensionID:LINEEXTENSIONID
:---структура LINEEXTENSIONID
;---здесь обработчики разных событий---
;---Бла-бла-бла------------------------
;---потом где-то в коде...-------------
invoke lineInitializeEx,addr hLineApp,
hInstance,addr lineCallbackFunc,addr AppName,\
addr dwNumDevs,addr dwHighVer,addr LineInitExParam
.if eax==0 ;если предыдущая функция
;завершилась успешно, выполняем это:
invoke lineNegotiateAPIVersion,hLineApp,
dwDeviceID,dwLowVer,dwHighVer,\
addr dwApiVersion,addr ExtensionID
.endif
WndProc endp

end start


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

Вот так примерно определяется версия TAPI. Для того чтобы с чистой совестью поставить точку в этой статье, упомяну ещё об определении расширенной версии с помощью lineNegotiateExtVersion. TAPItest не будет поддерживать расширений, поэтому мы опустим разглагольствования на эту тему. Информацию же о расширениях и этой функции можно получить у Великого Орлангура в лице MSDN? :). А пока пока.
Категория: Программирование под Windows | Добавил: Buba (22.06.2007) | Автор: Fess (TGL team)
Просмотров: 1152 | Рейтинг: 0.0/0 |

Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа

Поиск

Друзья сайта

Статистика


Copyright MyCorp © 2024