DispatchMessage 是 Windows API,非虛擬函數,無法直接覆寫。若需自訂消息分發邏輯,可在訊息迴圈中自行處理:
while (GetMessage(&msg, NULL, 0, 0)) {
if (!MyPreDispatch(&msg)) { // 自訂預處理
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
指訊息已被 PostMessage 放入佇列,但尚未被 GetMessage/PeekMessage 取出處理。此時訊息處於「掛起」狀態。若主執行緒忙碌(如執行耗時運算),訊息會持續堆積導致介面假死。
AfxBeginThread、std::thread)。PeekMessage + DispatchMessage 保持回應。參考資料:MFC 訊息處理深度解析