• Thứ Ba, 16/12/2003 16:26 (GMT+7)

    Bàn phím trên màn hình

        Với một bàn phím ảo trên màn hình có thể thay đổi kích cỡ và màu sắc hay thêm bớt phím tuỳ ý, bạn không còn phải “huy động” các ngón tay của mình túc trực trên bàn phím nữa mà có thể thoải mái rê chuột và “click” chọn các phím ngay trên màn hình. Chương trình này được viết bằng Visual C++ 6.0, có xử lý tương tác với các chương trình khác đang “active” trong Windows như Notepad, Microsoft Word... và được chạy nền, có thể bật/tắt thông qua biểu tượng ở Systray (khay hệ thống).
        Đây là chương trình demo nhỏ, đơn giản dùng các phương  thức chính sau:
        • AttachThreadInput 
        • keybd_event 
        • VkKeyScan 
        • GetKeyState

    Các lớp (class) chính của chương trình:
    l COnscreenKeyboardApp
    ( COnscreenKeyboardDlg: Định nghĩa hành vi của cửa sổ chính của ứng dụng. Lớp này chứa các phương thức chính sau:
    void AddKey(pNormal, pShifted, pWidth);

    void DrawKey(CDC * dc, CRect & rc, KEYDEF * key, BOOL cHilight=FALSE);

    void SendKey(KEYDEF * key);

    int DescribeKeyState();

      void DrawKeyboard();

    …….

    ( CSystemTray: Định nghĩa menu của ứng dụng đặt ở khay hệ thống.

    ( CKEYDEF: Định nghĩa các phím.

    struct KEYDEF

    {

         char cNormal;

         char cShifted;

         int cWidth;

    };


    Các file chương trình:

    OnscreenKeyboard.h: file header chính.

    OnscreenKeyboard.cpp: file mã nguồn chính, chứa lớp ConscreenKeyboardApp.

    OnscreenKeyboard.rc: liệt kê danh sách các tài nguyên Windows mà chương trình sử dụng.

    OnscreenKeyboardDlg.h, OnscreenKeyboardDlg.cpp: chứa lớp OnscreenKeyboardDlg.

        Bạn có thể download chương trình demo này tại địa chỉ http://www28.brinkster.com/shcvn/software/onscreenkeyboard.rar và dùng WinRAR để giải nén (hoặc bạn có thể download ở địa chỉ  http://www.codeproject.com/samples/OnscreenKeyboard/OnscreenKeyboard _src.zip).
    Chúc các bạn thành công.

    Phạm Hoàng Hải
    Shcvn@fptnet.com.vn
    99CT, Trường ĐH Hùng Vương, Tp.HCM

    ID: A0307_110