|
|
@@ -924,6 +924,22 @@ LRESULT CALLBACK CWindowWnd::__DialogWndProc(HWND hWnd, UINT uMsg, WPARAM wParam
|
|
|
BindRelayTarget(pfnTarget, hWnd);
|
|
|
pMgr->SetDefProcRelay(&RelayWndProc, hWnd);
|
|
|
}
|
|
|
+
|
|
|
+ // [真模态回归修复] 真模态(DialogBoxIndirectParam)期间,系统消息循环不调用主循环的
|
|
|
+ // TranslateMessage/PreMessageHandler,而本项目大量弹框把"工作线程 PostMessage 的完成消息"
|
|
|
+ // (如 WM_SHANGPIN_HANDLE_SUCCESS/FAIL、WM_MEMBER_CHECK_*、WM_SHOUKUAN_STATUS_*、
|
|
|
+ // WM_ZHENGCAN_RENSHU_* 等)挂在 IMessageFilterUI::MessageHandler 上、只经 pre-filter 链分发,
|
|
|
+ // 因此这些消息在模态下收不到,表现为点保存/确定后卡在"处理中…"。
|
|
|
+ // 这里在分发 WNDPROC 之前补跑本窗口的 pre-filter 链(pMgr->PreMessageHandler),
|
|
|
+ // 完全等价于主循环行为(pre-filter 优先,未处理再走 HandleMessage),彻底根除该回归。
|
|
|
+ // 取不到 manager 时降级为原行为,不引入新回归;WM_TOUCH 等 pre-filter 不处理的消息照常回落。
|
|
|
+ if (pMgr != NULL)
|
|
|
+ {
|
|
|
+ LRESULT lPre = 0;
|
|
|
+ if (pMgr->PreMessageHandler(uMsg, wParam, lParam, lPre))
|
|
|
+ return lPre;
|
|
|
+ }
|
|
|
+
|
|
|
return pThis->HandleMessage(uMsg, wParam, lParam);
|
|
|
}
|
|
|
|