回覆列表
  • 1 # 尋夢小老頭

    在MFC中使用PostMessage和SendMessage函式:

    BOOL PostThreadMessage( UINT message , WPARAM wParam, LPARAM lParam );

    Called to post a user-defined message to another CWinThread object

    使用這個函式可以向一個CwinThread型別的類傳送訊息(即包括從CWindThrea中繼承而來的類),使用方法如下:

    CWinThread *pUIThread = AfxBeginThread(RUNTIME_CLASS(CProgress));//CProgress是從CWindThead中繼承而來的類

    CProgress *pUIThrd = (CProgress *)(pView->pUIThread); //pView是一個視類的例項,pUIThread是它的一個成員

    pUIThrd->PostThreadMessage(WM_PROS,NULL,NULL); //向CProgress類傳送WM_PROS訊息,由該類中對應的訊息響應函式進行處理

    BOOL PostMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0 );

    Places a message in the window"s message queue and then returns without waiting for the corresponding window to process the message

    使用這個函式可以向一個CWnd型別的類傳送你訊息(即包括從CWnd類中繼承而來的類),CView也是從中繼承而來的,使用方法如下:

    CWinThread *pThread = AfxBeginThread(Calculate,this); //this代表的是一個從CView類中繼承而來的Demo4View類,Caculate是該執行緒的

    //執行緒處理函式,把this傳遞給Caculate進行處理

    CDemo4View *pView = (CDemo4View *)pParam;

    pView->PostMessage(WM_RESULT,NULL,duration); //向這個CDemo4View類傳送WM_RESULT訊息,由該類對應的訊息響應函式進行處理

    LRESULT SendMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0 );

    它與PostMessage的用法相同個,不同支援是它只有在對應的類處理完傳送的訊息後才返回,這樣後面的程式碼可能要過一段時間才能執行;

    而PostMessge是傳送完訊息就立即返回,不管訊息處理完沒有,這樣後面的程式碼就可以立即執行。

  • 中秋節和大豐收的關聯?
  • 什麼是人工智慧?