2013-08-30 38 views
0

當我單擊按鈕時,此按鈕上的焦點被設置。從被點擊的按鈕中移除焦點

如何使用C++中的WIN API從此按鈕中移除焦點?

我想也許以某種方式使用SendMessage WIN API可以從按鈕中刪除焦點。

我只有按鈕的句柄。

此外,我不能訪問父窗體窗口。

我知道幾乎每次都可以使用:: SetFocus,但是這次我不能使用它,因爲即使我找到句柄,我也無法訪問窗口窗體。所以請諮詢其他解決方案。

+0

你想要關注什麼? 'SetFocus'可能就是你想要的。 – chris

+1

爲什麼不能調用['GetParent'](http://msdn.microsoft.com/zh-cn/library/windows/desktop/ms633510.aspx)? – IInspectable

回答

1

您只需將焦點放在另一個窗口上,通過調用::SetFocus(或CWnd::SetFocus,如果您使用的是MFC)和所需窗口的句柄/指針。

+0

但如果我不能訪問父窗體?我無法訪問,請諮詢其他事情。謝謝 – Jigberto

+0

你是什麼意思,你不能訪問它?如果您有權訪問子窗口,則可以訪問父窗口(通過':: GetParent'或'CWnd :: GetParent')。 –

+0

:: SetFocus((HWND)GetParent())可能不適用於按鈕 – ChatCloud

1

子類按鈕和接口WM_SETFOCUS消息。那會告訴你失去焦點的HWND。如果需要,您可以再回到HWND

2

你可以把焦點放在另一個窗口上,但是如果你真的不需要關注。最好使用::SetFocus(NULL)。這樣可以防止發送一些Windows消息,因此性能可能會稍微增加。

+0

這是使用最少代碼完成工作的最佳解決方案。還需要記住:: SetSocus(hWnd)可能不會成功,但NULL始終可用。 – ChatCloud