• Thứ Tư, 22/06/2005 14:33 (GMT+7)

    Câu hỏi :
    Lệnh UpdateData() dùng được trong VC++ 6.0 nhưng không dùng được .Net, xin hướng dẫn cách sử dụng hoặc giới thiệu lệnh tương đương. Xin hướng dẫn cách tạo icon ở status bar, dùng NOTIFYICONDATA và Shell_NotifyIcon hiện được icon nhưng di chuột đến đó thì biến mất.


    Trả lời :
    Hàm UpdateData() được dùng để truy xuất các biến kết hợp với các đối tượng giao diện MFC. Thí dụ nếu bạn đã định nghĩa 1 biến m_text kết hợp theo trị (Category=Value) với 1 textbox thì để truy xuất đúng nội dung của textbox trong phần mềm bạn phải viết đoạn code như sau:

     UpdateData(TRUE);

     // đoạn lệnh truy xuất biến m_text

     UpdateData(FALSE);

    Lưu ý rằng lệnh UpdateData() luôn cần thiết để có thể truy xuất đúng nội dung của các điều khiển MFC của VC++ bất chấp version nào (VC++ 6.0, VC++ .Net). Tuy nhiên nếu bạn dùng VC#, VJ# hay VB .Net thì không cần dùng hàm UpdateData (hàm này không tồn tại trong các ngôn ngữ này vì không cần thiết), việc truy xuất nội dung các điều khiển giao diện trong các ngôn ngữ mới này là trong suốt.

    Hàm API Shell_NotifyIcon() cho phép bạn thêm/bớt icon của phần mềm vào “System Tray” của Windows, chứ không tác động đến “Status bar” nào cả. Đoạn code VC++ sau demo việc đăng ký icon của ứng dụng vào “System tray” rồi sau đó gở bỏ:

     //khai báo biến record chứa thông tin về icon cần đăng ký

     NOTIFYICONDATA tnd;

     //thiết lập giá trị các field cho record

     tnd.cbSize = sizeof(NOTIFYICONDATA); //kích thước của record tnd

     tnd.hWnd = m_hWnd; // handle cửa sổ ứng dụng

     tnd.uID = 3200; // id nhận dạng icon

     tnd.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;

     tnd.uCallbackMessage= MYWM_NOTIFYICON; //thông báo kết hợp với icon

     tnd.hIcon = m_hIcon; // handle của icon

     strcpy(tnd.szTip,”MiniChatServer”); //chuỗi tooltip của icon

     //đăng ký icon của ứng dụng vào System tray

     Shell_NotifyIcon(NIM_ADD, &tnd);

     //gở bỏ icon của ứng dụng ra khỏi System tray

     Shell_NotifyIcon(NIM_DELETE, &tnd); 
    Chuyên mục: Lập trình