• Thứ Năm, 21/08/2008 10:13 (GMT+7)

    Trợ giúp trên Windows Vista

    Từ phiên bản Windows Vista, Microsoft không còn phân phối chương trình Windows Help dùng để xem các tệp trợ giúp .hlp 32 bit. Các công ty phần mềm cũng không được phép phân phối chương trình đó cho người dùng. Khi người dùng mở tệp .hlp trên Vista, họ sẽ nhận được thông báo định dạng lạc hậu không còn được hỗ trợ nữa. Nếu không kịp chỉnh sửa phần mềm thì giải pháp đơn giản nhất là người dùng tải xuống và cài đặt WinHlp32.exe từ địa chỉ http://go.microsoft.com/fwlink/?LinkID=82148.

    Để giải quyết vấn đề triệt để hơn, chúng ta cần phải làm hai việc: chuyển đổi tệp trợ giúp từ định dạng .hlp sang định dạng .chm được Windows Vista hỗ trợ và thay đổi cách gọi trợ giúp từ phần mềm ứng dụng. Mặc dù có rất nhiều tiện ích giúp tạo tệp .chm nhưng việc chuyển đổi định dạng của tệp trợ giúp không đơn thuần là "biên dịch lại". Có một số khác biệt nhỏ mà chúng ta cần lưu ý. Khác biệt căn bản là WinHelp dựa trên khuôn dạng RTF (Rich Text Format) trong khi HTML Help dựa trên HTML, RTF được thiết kế như một định dạng khả chuyển cho các trình soạn thảo trên PC trong khi HTML được thiết kế cho Internet. HTML không hỗ trợ các tab như RTF, nếu chúng ta dùng tab để bố trí các bảng và cột trong tệp trợ giúp thì rất có thể bố cục đó sẽ bị chuyển dạng sai (một số công cụ tạo tệp trợ giúp "nhanh nhẩu đoảng" chuyển mỗi dấu tab thành một dấu cách và làm hỏng hết cấu trúc văn bản).

    Nếu bạn sử dụng một tệp .hlp do người khác tạo (và không có tư liệu gốc để tạo nên tệp .hlp đó), bạn cũng không có gì phải lo lắng vì đã có tiện ích miễn phí của Manfred Winterhoff cho phép dịch ngược các tệp .hlp (tải xuống tại địa chỉ http://www.simtel.net/product.php%5Bid%5D23694%5Bcid%5D318%5BSiteID%5Dsimtel.net)

    Vấn đề thứ hai – chỉnh sửa ứng dụng, mặc dù đơn giản nhưng cũng nên được điểm qua (bằng ví dụ trong VB6). Nếu tên tệp trợ giúp không được đọc từ tệp tham số hay registry, chúng ta cần sửa lại thuộc tính App.HelpFile property: App.HelpFile = App.Path & "\helpfile.chm" (thay vì App.Path & "\helpfile.hlp"). Tất nhiên, bạn cũng nên bớt chút thời gian kiểm tra lại thuộc tính WhatsThisHelp của form xem nó đã được đặt là False chưa để đảm bảo trợ giúp sẽ được hiển thị khi người dùng nhấn phím F1. Thuộc tính HelpContextID của form (hay các control) cũng phải được đặt đúng bằng Help Topic ID của chủ đề bạn muốn hiển thị. Để hiển thị chủ đề trợ giúp theo ý mình, lập trình viên cần gọi hàm API HtmlHelp. Ví dụ, để hiển thị chủ đề 1234, chúng ta cần thực hiện lệnh gọi sau: HtmlHelp(frmMain.hWnd, App.HelpFile, HH_HELP_CONTEXT, ByVal CLng(1234)) (với điều kiện trước đó bạn đã khai báo hàm này bằng câu lệnh Public Declare Function HTMLHelp Lib "hhctrl.ocx" Alias "HtmlHelpA" (ByVal hwnd As Long, ByVal lpHelpFile As String, ByVal wCommand As Long, dwData As Any) As Long).

    Để biết thêm về các hàm API cho HtmlHelp, các bạn tham khảo tại địa chỉ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/htmlhelp/html/vsconovmain.asp
    Những công việc trên khá đơn giản nhưng rất hữu ích, hy vọng có thể giúp các bạn hỗ trợ người dùng trên Windows Vista tốt hơn.

    Đỗ Thanh Xuân
    Email: do.thanhxuan@yahoo.com.vn 

    ID: A0807_146