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.

Đáp:
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ỏ:


Code:
//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);
Theo goctinhoc