簡體   English   中英

解耦頂級 MFC 對話框

[英]Decouple Top-Level MFC Dialogs

我正在使用 MFC 和 C++,但不確定如何正確分離兩個需要相互交互的頂級對話框。 具體來說,其中一個對話框(比如對話框 X)應該執行一個動作來響應另一個對話框(比如對話框 Y)上的按鈕點擊。 當前在代碼庫中實現的方式是 Y 的構造函數將指向 X 的指針作為參數。然后當單擊它自己的按鈕時,它使用這個指針在 X 上執行操作。 這似乎是對通用對話框的不合理限制。 我希望能夠做的是讓 X 為來自 Y 的按鈕單擊消息注冊某種偵聽器。不幸的是,我沒有發現任何表明這是可能的。

我考慮過的兩種選擇:

  1. 注冊自定義消息並從 Y 發送到 X(高度耦合...)
  2. 廣播一條消息並在 X 中收聽它(似乎過度)

我對 MFC 比較陌生,對 MFC 社區的習語或最佳實踐不是特別熟悉。 我將不勝感激有關如何正確解耦對話框的任何想法或建議。

最簡單的方法是指定自定義WM_APP +x 消息並維護一個HWND列表,以便在您的事件發生時收到通知。 然而,更現代的方法是觀察者模式 這涉及創建一個IObserver和一個ISubject接口,它們的工作方式幾乎相同。 然后您的對話框將實現這些接口。 此解決方案的優點是您可以讓基於非 HWND 的類偵聽您的事件。 此外,發送消息的成本更高。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM