3 TỔNG QUAN VỀ ACTIVE ACCESSIBILITY VÀ HOOK
3.2 Nền tảng Active Accessibility
Cĩ hai thuật ngữ trong Active Accessibility đĩ là accessible object(đối tượng truy cập được) và simple element(thành phần giản đơn). Mặc dù mọi ứng dụng đều tồn tại cả
hai loại này, nhưng accessible object phổ biến hơn simple element.
3.2.1 Accessible Object
Đối với Microsoft Active Accessibility, những thành phần UI được cung cấp cho các client dưới dạng đối tượng COM. Các accessible object này chứa đựng các thành phần thơng tin, gọi là thuộc tính, dùng để mơ tả tên, vị trí, và các thơng tin khác cần thiết cho việc hỗ trợ truy cập. Active Accessibility cũng cung cấp những phương thức cho phép
Trang 102
client thực hiện các thao tác khác. Các accessible object cĩ simple element kết hợp với chúng được gọi là cha hay container.
Accessible object được thực thi bởi giao diện IAccessible của Active Accessibility. Các thuộc tính và phương thức của IAccessible cho phép ứng dụng client lấy thơng tin về
thành phần UI cần thiết bởi người sử dụng.
Ví dụ : IAccessible::get_accParent trả về một con trỏ giao diện đến cha của accessible object, và IAccessible::accNavigate cho phép client lấy thơng tin về các đối tượng khác trong một đối tượng cha.
3.2.2 Simple Elements
Một simple element là một thành phần UI dùng chung đối tượng IAccessible với những thành phần khác và dựa vào đối tượng IAccessible ( tiêu biểu là cấp cha của nĩ ) để
truy xuất các thuộc tính của nĩ. Để phân biệt các thành phần dùng chung đối tượng IAccessible, server gán một định danh duy nhất cho mỗi simple element. Việc gán này
được thực hiện trên cơ sở một thể hiện của giao diện vì thế các định danh là duy nhất trong mỗi ngữ cảnh. Các định danh này được gán tăng dần, bắt đầu từ 1. Cách tổ chức theo dạng này bắt buộc các simple element là cấp nhỏ nhất, khơng cho phép chúng chứa các thành phần khác.
Để cĩ thể truy xuất dựa vào định danh duy nhất, một simple element cần một đối tượng IAccessible và một số ID. Do đĩ khi tương tác với đối tượng IAccessible, client phải cung cấp một ID phù hợp. Chú ý : Định danh đặc biệt CHILD_SELF(0) đại diện cho chính accessible object, thay vì các thành phần con của nĩ.
Một control trong UI cung cấp IAccessible để dùng chung bởi các simple element. Ví dụ : Listview cung cấp một accessible object chung cho hộp danh sách và các simple element cho các phần tử của listview. Trong trường hợp này, đối tượng IAccessible cho hộp listview là cha hay container cho các phần tử trong đĩ.
Trang 103
Hình 45 Minh họa Simple Element
3.2.3 Các thành phần UI tự tạo
Nhà phát triển phía server thiết kế các accessible object dựa trên các UI của ứng dụng. Bởi vì Active Accessibility đã thực thi giao diện IAccessible trên các thành phần UI thơng dụng như listbox, menu, trackbar,…Chúng ta chỉ thực thi giao diện IAccessible cho các thành phần UI tự tạo trong các trường hợp sau đây :
• Các custom control được tạo bằng cách đăng ký một lớp cửa sổđược định nghĩa bởi ứng dụng.
• Các custom control vẽ trực tiếp lên màn hình và khơng cĩ định danh..
• Các custom control như là Microsoft ActiveX và các control Java.
• Các control và đối tượng trong cửa sổứng dụng phía client mà chưa được thực thi giao diện IAccessible.
Trong một ứng dụng sử dụng tồn bộ các thành phần UI do hệ thống cung cấp, chúng ta khơng cần phải thực thi IAccessible.
3.2.4 Các thành phần UI do hệ thống cung cấp
Active Accessibility cung cấp sự hỗ trợ cho hầu hết các control phổ biến. Sự minh họa dưới đây giới thiệu một cửa sổ tiêu biểu và một vài thành phần UI do hệ thống cung
Trang 104
cấp đã được Active Accessibility hỗ trợ. Ví dụ như title bar, menu, combo box, toolbar, tree view, status bar, size grip, listview, và scroll bar.
Hình 46 Minh họa một cửa sổ Window chun
Active Accessibility hỗ trợ sẵn các thành phần UI do hệ thống cung cấp cho các ứng dụng server, do đĩ người phát triển phía server khơng cần phải thực thi giao diện
IAccessible. Các ứng dụng chứa các thành phần này tựđộng kế thừa khả năng truy cập của chúng.