2010-05-19 39 views
1

我已經在ESRI支持論壇上發佈了這個,但是還沒有人回來解決方案。ESRI Map對象 - 是否可以禁用MouseWheel事件處理程序?

背景:我在維護一個使用ESRI ArcGIS組件(版本9.3.1 SP1)的C++地圖顯示應用程序。它實例化一個Map對象(esriCarto :: Map),查詢IActiveView接口,並調用Activate在視圖窗口客戶區傳遞(還有一大堆其他屬性也通過各種接口設置)。然後將其用於繪製操作序列的中間以呈現最終的顯示圖像。

問題: WM_MOUSEWHEEL事件似乎在Map對象(或一個子對象?)中被拾取,並導致奇怪的行爲。應用程序中應該發生的事情是,視圖窗口接收到此消息,然後調用「縮放」方法觸發適當的重繪。實際發生的情況是消息通過視圖窗口的PreTranslateMessage,然後顯示區域出現故障,,然後視圖窗口的OnMouseWheel處理程序被調用來處理縮放。

'毛刺',我的意思是視圖窗口變成白色,然後重新顯示前一個圖像。這並沒有發生在與ArcGIS 9.2集成的應用程序的早期版本中,並且在發生這種干擾效果時,沒有任何應用程序自己的繪圖代碼被調用。如果通過另一個上下文菜單選項調用窗口的縮放功能,也不會發生這種情況。

在閱讀了參考信息一段時間後,我懷疑Map的子ScreenDisplay對象響應鼠標滾輪事件並做了一些我們不希望它對視圖區域做的事情 - 我還懷疑有一個告訴它不要,但我似乎無法找到它。我有一個解決方法,即處理視圖窗口的PreTranslateMessage中的縮放,並防止消息進一步發展,但這感覺像是一種黑客攻擊。

因此,任何一種聰明的人都可以告訴Map對象忽略鼠標滾輪事件嗎?

+0

與您的軟件供應商合作尋找解決方案。他們接近源代碼,毫無疑問可以爲您提供正確的解決方法或修補程序。 – 2010-05-19 12:47:09

+0

感謝漢斯,但我已經嘗試過(如上所述),目前還沒有成功。我仍在跟進ESRI,看看他們能否提供答案,但同時我在這裏發佈也沒有什麼壞處。 – 2010-05-19 13:41:41

回答

相關問題