版本:Visual Studio 2005
使用介面執行緒通常用於處理使用者輸入和響應使用者事件,這些行為獨立於執行該應用程式其他部分的線程。已經建立並啟動主應用程式線程(在 CWinApp 匯出的類中提供)。本文描述建立其他使用介面執行緒所需的步驟。
建立使用介面執行緒時,必須首先從 CWinThread 衍生類別。必須使用 DECLARE_DYNCREATE 和 IMPLEMENT_DYNCREATE 宏聲明並實現此類。此類必須重寫某些函數,也可以重寫其他函數。下表列出了這些函數及其用途。
建立使用介面執行緒時要重寫的函數
| 函數 |
用途 |
ExitInstance |
線程終止時執行清除。通常重寫。 |
InitInstance |
執行線程執行個體初始化。必須重寫。 |
OnIdle |
執行線程特定的閑置時間處理。通常不重寫。 |
PreTranslateMessage |
將訊息調度到 TranslateMessage 和 DispatchMessage 之前對其進行篩選。通常不重寫。 |
ProcessWndProcException |
截獲由線程的訊息和命令處理常式引發的未處理異常。通常不重寫。 |
Run |
控制線程的函數。包含訊息泵。一般不重寫。 |
MFC 通過參數重載提供兩個版本的 AfxBeginThread:一個用於使用介面執行緒,另一個用於輔助線程。若要啟動使用介面執行緒,請調用 AfxBeginThread,提供下列資訊:
從 CWinThread 派生的類的 RUNTIME_CLASS。
(可選)所需的優先順序層級。預設值為正常優先順序。有關可用的優先順序層級的更多資訊,請參見 Platform SDK 中的 SetThreadPriority。
(可選)所需的線程堆棧大小。預設值與建立線程的堆棧大小相同。
(可選)CREATE_SUSPENDED,如果希望在掛起狀態中建立線程。預設值為 0,即正常啟動線程。
(可選)所需的安全屬性。預設值與父線程具有相同的訪問權。有關此安全資訊格式的更多資訊,請參見 Platform SDK 中的 SECURITY_ATTRIBUTES。
AfxBeginThread 為您完成大部分工作。它建立類的新對象、使用您提供的資訊初始化該對象並調用 CWinThread::CreateThread 開始執行線程。在整個過程中進行檢查,確保假如建立過程的任何部分出現故障,所有對象都能被正確地解除配置。