2 Khi khoảng thời gian mà người dùng ngừng tương tác với hệ thống vượt
quá giá trị ấn định Wait thì hệ thống tự động thực hiện ứng dụng ScreenSaver.
12.4.1 Đặc điểm:
Khác với các ứng dụng thông thường khác, ứng dụng ScreenSaver phải có khả năng ứng xử khác nhau trong các tình huống khác nhau mà ứng dụng được thực hiện. Các tình huống thực hiện có thể xảy ra đối với một ứng dụng ScreenSaver là:
(a) Chạy minh họa trực tiếp ScreenSaver trong màn hình con của hộp hội thoại: Khi người dùng click chọn ứng dụng ScreenSaver trong danh sách các ScreenSaver của hộp hội thoại Display Properties / Screen Saver.
(b) Thực hiện chức năng ấn định thông số của ScreenSaver: Khi người dùng click chọn mục Setting... sau khi đã chọn ứng dụng ScreenSaver trong danh sách các ScreenSaver.
(c) Thực hiện chức năng đặt Password của ScreenSaver: Khi người dùng click chọn mục Password Setting... sau khi đã chọn ứng dụng ScreenSaver trong danh sách các ScreenSaver. Chỉ sử dụng cho các phiên bản Win9x trở về trước.
(d) Chạy minh họa ScreenSaver trong màn hình thực: Khi người dùng click chọn mục Preview sau khi đã chọn ứng dụng ScreenSaver trong danh sách các ScreenSaver. Chế độ chạy này tương tự chế độ chạy thực nhằm giúp người dùng hình dung được hoạt động thực của ScreenSaver.
(e) Chạy ScreenSaver: Khi khoảng thời gian mà hệ thống ngừng tương tác với người dùng lớn hơn khoảng thời gian chờ cho phép. Đây là chế độ chạy thực của ScreenSaver.
12.4.2 Tham số dòng lệnh (Command Line Parameters):
Mỗi khi thực hiện ứng dụng ScreenSaver, hệ thống cung cấp thông tin về tình huống cụ thể mà ứng dụng được thực hiện thông qua nội dung tham số dòng lệnh gửi đến cho chương trình của ứng dụng. Ứng dụng ScreenSaver phải lấy thông tin này từ tham số dòng lệnh nhằm lựa chọn xử lý phù hợp.
Thuộc tính m_lpCmdLine của đối tượng quản lý tiểu trình chính trong ứng dụng chứa chuỗi tham số dòng lệnh truyền cho ứng dụng. Nội dung của thuộc tính này khác nhau tùy theo tình huống thực hiện ứng dụng khác nhau. Tương ứng các trường hợp (12.4.1), nội dung tham số dòng lệnh có thể là:
Một số vấn đề trong Windows 169
(a) Chạy minh họa trực tiếp ScreenSaver: Vùng chạy mẫu là cửa sổ con trong hộp hội thoại Display Properties. Handle của cửa sổ này là một giá trị trong tham số dòng lệnh có nội dung như sau:
"/p xxxx" Trong đó:
- /p (hoặc /P): Giá trị phản ánh tình huống thực hiện. - xxxx : Các chữ số phản ánh giá trị handle của cửa sổ con. Cách lấy giá trị handle này từ tham số dòng lệnh như sau:
HWND parent; // Biến chứa handle sscanf(m_lpCmdLine+3, "%d", &parent);
Ở chế độ này, ScreenSaver được thiết kế theo kiểu ứng dụng có màn hình giao diện chính là cửa sổ với nội dung hoạt động như chạy thực. Cửa sổ này được lồng vào vị trí của cửa sổ con nói trên. (b) Thực hiện chức năng ấn định thông số: Nội dung tham số dòng lệnh
như sau:
"/c xxxx" Trong đó:
- /c (hoặc /C) : Giá trị phản ánh tình huống thực hiện. - xxxx : Handle của hộp hội thoại (dialog).
Ở chế độ này, ScreenSaver được thiết kế theo kiểu ứng dụng có màn hình giao diện chính là dialog với các mục nhập cho phép điều chỉnh thông số liên quan đến cách thức hoạt động của ScreenSaver ở chế độ thực. Dialog giao diện là dialog khóa (modal dialog) và đối tượng cửa sổ cha của nó là hộp hội thoại nói trên.
(c) Thực hiện chức năng đặt Password: Nội dung tham số dòng lệnh như sau:
"/a xxxx" Trong đó:
- /a (hoặc /A): Giá trị nhận diện tình huống thực hiện. - xxxx : Handle của cửa sổ hội thoại.
Ở chế độ này, ScreenSaver được thiết kế theo kiểu ứng dụng có màn hình giao diện chính là dialog. Dialog giao diện có thể là dialog dùng đặt password của hệ thống (thư viện MPR.DLL) hoặc dialog của người dùng.
(d) Chạy minh họa ScreenSaver: Nội dung tham số dòng lệnh như sau: "/s"