2009-10-01 41 views
5

我們有一個在XP64和Vista64多顯示器工作站上運行的應用程序,當應用程序中的單個窗體移動到某些顯示器時會出現奇怪的問題。當窗體位於主顯示器的上方和左側時,光標變爲對角線調整大小

如果窗體移動到主監視器左側和上方的監視器(它在「顯示設置」對話框中具有負座標),則將光標放在窗體中時用戶將獲得對角線調整大小的光標(我只在光標在窗口的chrome中才看到它發生,但用戶報告它發生在整個窗口內)。

我能夠確定它只發生在光標位於主監視器上方時(使輔助監視器僅部分位於主監視器上方導致問題僅發生在主監視器上方的窗體部分)。

這隻發生在我們整個應用程序中的一個表單中,而且這個表單不會執行任何特別花哨的操作(不重寫WndProc等),所有使用的自定義控件也用於其他形式, t顯示這個問題。

什麼會導致對角線調整大小光標始終顯示?

回答

6

這似乎是Form.WmNCHitTest中的一個錯誤。我相信它確定x和y座標的方式是不正確的(爲了得到它HIWORD((int)((long)lParam)),其中文檔說使用GET_Y_LPARAM定義爲((int)(short)HIWORD(lParam)))。

只有在打開尺寸夾時才使用此方法。關閉尺寸手柄可繞過此代碼並使表格正常工作。

+0

我們已經知道這種解決方法一段時間了。有沒有人提出了一個實際的修復,可以讓大小抓地力​​顯示? – 2015-11-06 20:34:03

0

附加信息:我發現,將Form.SizeGripStyle設置設置爲Show時,光標變爲對角線調整大小光標的奇怪行爲,看上去和您的工作方式相同,您正在調整右下角的窗口大小,窗體窗口移動到輔助監視器時出現。當將Form.SizeGripStyle設置爲Auto時,默認情況下,此問題消失,表單窗口光標和調整大小的工作方式(正確的遊標等)。

相關問題