Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Một số hàm về Message

  1. #1
    Ngày gia nhập
    07 2007
    Nơi ở
    Hồ Chí Minh
    Bài viết
    66

    Mặc định Một số hàm về Message

    PostMessage
    Code:
    BOOL PostMessage(          
        HWND hWnd,
        UINT Msg,
        WPARAM wParam,
        LPARAM lParam
    );
    Hàm này gởi msg đến hàng đợi mà ko chờ xử lý msg.
    Do đó, khi gởi 1 msg mà ko cần return, ta xài hàm này.

    SendMessage
    Code:
    LRESULT SendMessage(          
        HWND hWnd,
        UINT Msg,
        WPARAM wParam,
        LPARAM lParam
    );
    Hàm này có tính năng tương tự PostMessage, nhưng nó sẽ đợi msg dc xử lý.
    Và trả về giá trị. Chúng ta xài khi cần giá trị return của nó.


    PeekMessage
    Code:
    BOOL PeekMessage(          
        LPMSG lpMsg,
        HWND hWnd,
        UINT wMsgFilterMin,
        UINT wMsgFilterMax,
        UINT wRemoveMsg
    );
    Tương tự như PostMessage, Hàm này ko đợi xem có msg trong hàng đợi hay ko,
    Nó return ngay.
    Có 1 thông số là wRemoveMsg
    PM_NOREMOVE //Không remove msg sau khi gọi hàm, nó vẫn nằm trong hàng đợi
    PM_REMOVE //Ngược lại
    Ngoài ra, ta có thể chỉ định nhận các msg loại nào
    PM_QS_INPUT //Keyboard hay Mouse
    PM_QS_PAINT //Paint

    GetMessage
    Code:
    BOOL GetMessage(          
        LPMSG lpMsg,
        HWND hWnd,
        UINT wMsgFilterMin,
        UINT wMsgFilterMax
    );
    Hàm này lại giống SendMessage, Nó sẽ đợi đến khi có 1 msg, rồi sau đó mới return.


    Còn tiếp...
    Đã được chỉnh sửa lần cuối bởi cuxu : 24-02-2008 lúc 10:10 AM.
    Thèm khát con gái !!
    ......................

  2. #2
    Ngày gia nhập
    04 2008
    Bài viết
    244

    Code:
            TranslateMessage(&msg);
            DispatchMessage(&msg);
    vậy 2 hàm này có ý nghĩa gì vậy anh,VD nó được đặt trong ngữ cảnh

    Code:
    MSG msg;
        BOOL bRet;
        //vòng lặp đón và xử lý các message 
        while((bRet = GetMessage(&msg, NULL, 0, 0)) != 0)
        { 
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    thì có ý nghĩa gì

  3. #3
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    Một ứng dụng nhận các thông điệp từ hàng đợi thông điệp bằng cách thực thi một đoạn mã sau:
    Code:
    while ( GetMessage(&msg, NULL, 0 ,0) )
    {
    TranslateMessage (&msg);
    DispatchMessage (&msg);
    }
    Trong đó msg là một biến cấu trúc kiểu MSG được định nghĩa trong tập tin tiêu đề
    Ý nghĩa của các trường trong cấu trúc MSG
    hwnd : Định danh của cửa sỗ mà thông điệp phát sinh.
    message : Định danh của thông điệp, ví dụ như thông điệp phát sinh khi bấm nút chuột trái là WM_LBUTTONDOWN có giá trị 0x0201.
    wParam : Tham số 32-bit chứa các thông tin phụ thuộc vào từng thông điệp cụ thể.
    lParam : Tham số 32-bit phụ thuộc vào thông điệp.
    time : Thời gian đặt thông điệp trong hàng đợi.
    pt : Tọa độ của chuột khi đặt thông điệp vào hàng đợi
    Hàm GetMessage sẽ trả về 0 nếu msg chứa thông điệp có định danh WM_QUIT (0x0012), khi đó vòng lặp thông điệp ngưng và ứng dụng kết thúc. Ngược lại thì hàm sẽ trả về một giá trị khác 0 với các thông điệp khác.

  4. #4
    Ngày gia nhập
    01 2010
    Nơi ở
    до свидания!
    Bài viết
    1,766

    Nói cho cùng thì nó là một vòng lặp để lấy thông điệp từ hàng đợi của ứng dụng và phân phát cho thủ tục Window xử lý, vòng lặp này chấm dứt khi thông điệp "qua" nó là WM_QUIT (Khi chúng ta "tắt" ứng dụng tạo ra thông điệp WM_DESTROY, thông điệp này sẽ gọi hàm PostQuitMessage đặt thông điệp WM_QUIT vào hàng đợi). Đơn giản là thế, còn bạn muốn khai thác chúng như thế nào thôi! Chúc vui vẻ.

Các đề tài tương tự

  1. Xử lý Message trong MFC?
    Gửi bởi thegioimoiqb trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 1
    Bài viết cuối: 09-11-2013, 01:41 PM
  2. Không gửi được message vào một cửa sổ khác.
    Gửi bởi luanft trong diễn đàn Windows API, Hooking, xử lý Windows Message
    Trả lời: 0
    Bài viết cuối: 22-09-2013, 03:37 PM
  3. Cách xử lý Message của MFC, nghĩa là khi gởi một message đến chính nó trong Dialog
    Gửi bởi theboy909 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 6
    Bài viết cuối: 13-06-2011, 05:16 PM
  4. Message lỗi
    Gửi bởi ndm trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 11-12-2009, 12:59 PM
  5. Bị lỗi với dll hook message
    Gửi bởi hoanglinh9466 trong diễn đàn Windows API, Hooking, xử lý Windows Message
    Trả lời: 1
    Bài viết cuối: 20-08-2006, 09:45 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn