2013-08-30 28 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