Thu hoạch các khả năng của thiết bị

Một phần của tài liệu Beginning DirectX9 pot (Trang 144 - 145)

Sau khi bạn có một thiết bị hợp lệ trả về từ hàm EnumDevices, bạn cần phải kiểm tra các chức năng cơ bản của nó. Ví dụ bạn cần phải tìm dạng force feedback mà Device này có thể hỗ trợ. Liệt kê các khả năng của một Device cũng tương tự như liệt kê các Device. Để lấy những đặc điểm cụ thể của mỗi Device, bạn phải gọi hàm EnumObjects. Giống như gọi hàm

EnumDevices, hàm này làm việc với phương thức callback

HRESULT EnumObjects( LPDIENUMDEVICEOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD dwFlags ); hàm EnumObjects cần 3 tham số:

lpCallback – đây là tên của hàm callback

pvRef – đây là dữ liệu mở rộng sẽđược gửi đến hàm callback khi nó được gọi.

dwFlags – là những cờ hiệu có giá trị kiểu DWORD, chúng chỉ rõ các dạng của đối tượng trên Input

Device mà bạn quan tâm trong bảng liệt kê. Bảng 9.3 mô tả các tham sốdwFlags cụ thể hơn

Tên Flag mô tả

DIDFT sử dụng một trục tuyệt đối

DIDFT_ALIAS tìm kiếm điều khiển đã xác nhận bởi HID bằng cách sử dụng biệt danh

DIDFT_ALL tìm kiếm tất cả các dạng Object trong thiết bị DIDFT_AXIS tìm kiếm một trục: tương đối hoặc tuyệt đối DIDFT_BUTTON kiểm tra nút nhấn hoặc nút bật tắt DIDFT_COLLECTION danh sách các tập trung liên kết HID DIDFT_ENUMCOLLECTION liên hệ tới kết nối tập trung

DIDFT_FFACTUATOR chứa đựng một phát động force feedback DIDFT_FFEFFECTTRRIGGER chứa đựng nút bấm force feedback

DIDFT_NOCOLLECTION tìm kiếm những đối tượng không liên quan đến một liên kết tập trung

DIDFT_NODATA không khởi tạo dữ liệu

DIDFT_PDV tìm kiếm một điều khiển POV DIDFT_PSHBUTTON tìm kiếm một nút nhấn DIDFT_RELAXIS sử dụng một trục tương đối DIDFT_TGLBUTTON tìm kiếm một nút bật tắt

DIDFT_VENDORDEFINED trả về một đối tượng của một kiểu đã xác định trước

Mục đích của hàm callback EnumObjects là thu thập thông tin về thành phần của Input Device. Thông tin này tập hợp lại cho mỗi thiết bị được truyền tới callback như một cấu trúc

DIDEVICEOBJECTINSTANCE

BOOL CALLBACK DIEnumDeviceObjectsCallback( LPDIDEVICEOBJECTINSTANCE lpddoi,

LPVOID pvRef );

hàm DIEnumDeviceObjectsCallback lấy 2 tham số. Tham số thứ nhất là cấu trúc kiểu

DIDEVICEOBJECTINSTANCE mà giữ thông tin trả về liên quan đến thiết bị. Tham số thứ hai

là bất kỳ giá trị nào được truyền cho tham sốpvRef của hàm EnumObjects .

Cấu trúc DIDEVICEOBJECTINSTANCE chứa đựng sự giàu có thông tin có giá trị về thiết bị. Nó hữu ích cho việc thiết lập giới hạn của force feedback, cũng như giúp xác định các dạng riêng biệt và chỉ số của điều khiển trên thiết bị.

Bạn có thể tìm thấy giải thích đầy đủ về cấu trúc DIDEVICEOBJECTINSTANCE trong tư liệu của DirectInput

Một phần của tài liệu Beginning DirectX9 pot (Trang 144 - 145)