Chào mọi người!
Mình post bài này muốn nói 1 trong nhiều cái hay ở lập trình hướng đối tượng.
Cụ thể là vận dụng hàm tạo và hàm hủy của 1 đối tượng, nếu khai thác tốt thì
nó không chỉ đơn thuần là "tạo" và "hủy" như tên gọi.
Đầu tiên mình cài đặt lớp CAutoCursor với mục đích thay đổi cursor chuột về trạng thái bận.


Mã:
class CAutoCursor{private:    static HCURSOR m_hCursor;    HCURSOR m_hPreviousCursor;public:    CAutoCursor()    {        // Thay đổi cursor        // Nạp cái "đồng hồ cát" vô biến m_hCursor        m_hCursor = ::LoadCursor( NULL, IDC_WAIT );        // sau đó kích họat nó, để ý hàm SetCursor bên dưới nó sẽ         // trả về handle của cái cursor trước khi thay đổi nếu có .        m_hPreviousCursor = ::SetCursor( m_hCursor );    };    virtual ~CAutoCursor()    {        // Khôi phục lại cursor (ý mình là hình "mũi tên")        ::SetCursor( m_hPreviousCursor );    };}};
Sau đó các bạn hãy tạo 1 ứng dụng dạng MFC/ Dialog Base trong MVC++ X.X chẳng hạn,
nó sẽ generate cho bạn sẵn 1 cái dialog có đc chức năng OK và Cancel, tiếp đó bạn hãy add thêm 1 button
cho Dialog của bạn có tên là "MainJob" chẳng hạn, ID để defaul.


Mã:
void CTest1Dlg::OnBnClickedButton1(){    // TODO: Add your control notification handler code here    CAutoCursor ac;    ::Sleep(1000);     // ở đây ví dụ đơn thuần mình chỉ suspend chương trình 1 thời gian,    // trong thực tế các ứng dụng sẽ thay đổi cursor, khi ứng dụng đang thực thi    // 1 công việc nào đó mất nhiều thời gian}
Để ý ở trên, trước khi "sleep" ứng dụng của bạn sẽ thay đổi cursor và tự động khôi phục khi "sleep" xong,
nếu bạn chỉ thay đổi trạng thái cursor khi thực hiện 1 phần công việc "MainJob" (SubJob chẳng hạn) thì chỉ cần "bọc" nó trong 1 khối.
VD:

Mã:
void CTest1Dlg::OnBnClickedButton1(){    // TODO: Add your control notification handler code here    // anothor job    ;    ;    ;    ;    {        CAutoCursor ac;        // SubJob        ;        ;        ;    }    ;    ;    ;}
Kỹ thuật trên sẽ giúp bạn: không quên khôi phục lại hình của cursor chuột khi code của bạn phức tạp.
Các bạn có thể dựa vô ví dụ này để tùy biến trong công việc của bạn
Có thể nhiều bạn đã biết, mình hướng dẫn lại cho các bạn chưa biết.