2010-12-05 54 views
1

我正在使用以下示例在禁用按鈕上方顯示工具提示。 How can I show a tooltip on a disabled button?GetChildAtPoint只返回禁用的控件?

該按鈕位於面板內部,我將MouseMove事件附加到面板,而不是窗體本身。 令人驚訝的是,如果按鈕被啓用,GetChildAtPoint返回null!該按鈕僅在禁用時返回。 我已經檢查了按鈕的位置,並且在啓用和禁用時以及它的父代都是面板時都是相同的。

要清楚;在所有控件上調用MouseMove事件,並在其中有GetChildAtPoint方法中的用法。當按鈕被啓用時,MouseMove被調用並且GetChildAtPoint返回null。當它被禁用時,MouseMove被調用並且GetChildAtPoint返回按鈕。

我不明白爲什麼這段代碼有效。任何幫助非常感謝,謝謝。

回答

5

您正在從WM_MOUSEMOVE調用GetChildAtPoint,並將其發送到鼠標下的窗口。禁用的控件不會收到WM_MOUSEMOVE,因此它會發送給父級。啓用的控件自己獲取消息,但父級沒有得到它。

+0

感謝您的幫助,但是如果我完全理解您的意思 - 在啓用的按鈕上調用MouseMove消息/ /,則GetChildAtPoint僅返回null。 – Rita 2010-12-07 05:25:31