我需要軟件中的應用程序空閒時間。出於這個原因,我做了一個幫助類ApplicationIdleHelper
,它實現了IMessageFilter
接口。DevExpress WaitForm和PreFilterMessage - 意外的MouseMove消息
這工作得很好,如果我的應用是在閒置了一段時間,我展示一個DevExpress WaitForm
使用此行代碼:
SplashScreenManager.ShowForm(typeof(WaitForm));
在這種WaitForm
我告訴用戶關於現在得到了什麼樣的一些信息在背景中。如果用戶移動鼠標或按下某些鍵我關閉WaitForm這樣的:
SplashScreenManager.CloseForm();
下面是步驟的問題解釋說:
- 鼠標光標是一個形式。
- 用戶在一段時間內沒有做任何事 - >空閒時間 - >所以我顯示
WaitForm
。 - 現在我在
PreFilterMessage
方法中得到一個MouseMove message
?但爲什麼?鼠標沒有移動。沒有按鍵?因爲我的應用程序認爲我得到了一個MouseMove message
,用戶做了一些輸入並自動關閉WaitForm
。
如果關閉WaitForm
,則會出現相同的行爲。
下面是一個示例應用程序,所以你應該能夠重現行爲: https://drive.google.com/file/d/0BxabrokJG-OWV3FLV2hNNVk5NjQ/view?usp=sharing
的DevExpress的文件說:
等待表單和閃屏是由一個閃屏經理 在顯示一個單獨的線程。
也許這與這種行爲有關?
希望有人能解釋我,爲什麼我在PreFilterMessage
函數中出現MouseMove message
,在顯示或關閉WaitForm
之後。
預先感謝您。
我以前遇到過這個bug。在第一個事件中保存鼠標的位置,如果在下一個事件中位置相同,則不執行任何操作。如果它已移動,請按照您的要求更新鼠標位置 –
非常感謝!簡單的解決方案,但它工作正常。您是否也使用過WaitForm控件,或者您是否遇到過其他控件的問題? – roli09