我正在討論Windows桌面應用程序。我期待編寫一個函數,例如SelectObject
(例如)阻止調用者,直到用戶單擊應用程序客戶區中的對象。一旦用戶選擇了一個對象,該函數就會返回一個指向它的指針。次要消息循環與單獨輸入線程
執行此操作的一種方法是運行一個小型消息循環並過濾掉WM_MOUSE*
,同時將其他消息傳遞迴外部消息循環。 (CRectTracker
是否這樣做我想。)
這也可以重新設計,以在它自己的單獨線程中運行調用者。然後,SelectObject
將使用CreateEvent/SetEvent/ResetEvent
與處理鼠標消息的主線程同步,並在滿足滿足對象選擇的條件時返回控制。
每種方法的優缺點是什麼?我在哪裏可以找到關於這種設計的更多信息?這些事情的正式條款是什麼?
密切觀察或使用AutoCAD的程序員可能會理解我在這裏如此糟糕的表達。
請仔細閱讀該問題。我不是在談論GDI的SelectObject函數。 – 2010-08-12 11:19:29