我偶然發現了一個奇怪的MFC問題。我有一個對話框,如果它有效,我會檢查ON_EN_KILLFOCUS上的每個編輯字段。如果驗證不通過,我將焦點設置回來並顯示錯誤消息。這很好,只要我會關閉對話框。我的意思是,如果我錯誤地輸入了字段並按下了關閉按鈕或X,則在其他處理事件之後,首先調用ON_EN_KILLFOCUS,因爲消息出現並且焦點返回到字段。所以我的問題:有沒有辦法在ON_EN_KILLFOCUS找出哪個事件會在它後面?如果是,那麼我可以檢查它的關閉事件,然後關閉對話框,而不是將我的焦點返回到錯誤地輸入的編輯字段。任何幫助將是如此多的幫助!有沒有辦法找出哪個第二個事件會發生在MFC中
1
A
回答
2
通常,您無法知道焦點更改事件後會發生什麼事件。
然而,就可以解決這個問題,你改變的條件時,驗證邏輯被觸發 - 驗證編輯控件時
- 丟失焦點
- 和焦點輸給了另一個編輯控件
通過檢查焦點是否丟失到另一個控件,您對用戶說:「不要移動到此組件 - 您尚未正確填寫當前的組件!」。
它捕捉用戶的意圖比驗證任何焦點更改更好。當用戶點擊關閉或系統X按鈕或任何其他按鈕時,它也不會運行驗證。 當然,當點擊確定按鈕時,您將需要添加顯式驗證。這個代碼非常簡單(檢查新的焦點窗口是對話框的子項,並且是一個輸入組件 - 您可以通過查看窗口的窗口類名稱來確定它是輸入組件)。 )
這也涉及用戶因爲其他原因(例如系統消息框或其他焦點抓取事件)而移動焦點的情況。由於焦點並未轉移到其他編輯控件之一,因此驗證不會運行,焦點不會被強制回到您的應用程序,這對某些人來說可能很煩人!
相關問題
- 1. 有沒有辦法找出哪個IF條件'觸發'入口if(){} block?
- 2. MFC:有沒有辦法沒有On_Bn_Clicked()事件的活動按鈕?
- 3. 有沒有辦法給leiningen添加第二個src文件夾?
- 4. 有沒有辦法找出創建哪個類實例'this'
- 5. 有沒有辦法找出TButtonGroup的哪個按鈕被點擊?
- 6. 有沒有辦法找出用戶連接到哪個App Store?
- 7. 有沒有辦法在PHP中將值轉發到第二頁?
- 8. 有沒有辦法找出哪個網頁與哪個查詢相關聯?
- 9. 有沒有辦法找出哪個藍牙設備插入哪個USB端口?
- 10. 有沒有辦法捕捉vuejs中的多個子組件發出的事件?
- 11. jQuery的工作在第二個事件,但沒有第一個
- 12. 有沒有辦法找出一個asp.net會話的年齡?
- 13. 有沒有辦法觸發事件viewDidUnload?
- 14. 有沒有辦法從jQuery點擊事件中找出這個問題?
- 15. 有沒有辦法做到這一條件JOIN沒有第二個查詢?
- 16. iOS:有沒有辦法確定發件人來自哪個UIControlEvent?
- 17. 有沒有辦法知道某個事件正在調用哪個函數?
- 18. 第二個dojo FilteringSelect控件onChange事件沒有被觸發
- 19. 第一個jquery事件正在發生,但不是第二個
- 20. linux:有沒有辦法找出哪個進程生成了一個核心文件?
- 21. 有沒有辦法在Delphi中記錄每一個gui事件?
- 22. 有沒有辦法讓第二部分不尋找一個功能?
- 23. 有沒有辦法找出哪個版本的Java applet編譯在
- 24. 有沒有辦法找出HLS流chromecast正在播放哪個比特率?
- 25. 在記事本++中,有沒有辦法找到打開多少個文件?
- 26. 點擊事件在第二個foreach中沒有綁定
- 27. 有沒有辦法找出哪種方法最耗時? Eclipse Java
- 28. 有沒有辦法觸發一個沒有點擊事件的updatepanel?
- 29. 有沒有辦法找到哪個字體已被Phonegap渲染?
- 30. 有沒有辦法告訴哪個EventLog導致C#中的EntryWritten事件?