2

我有一个 MFC 按钮控件,我试图通过在单击时启动一个计时器并使其在 OnTimer 函数中通过我的事件来处理它的“OnPressed”事件。这一切都很好,但焦点仍然在按钮上,如果我在按钮区域之外单击,应用程序将执行 OnPressed 事件。关于在按钮区域外按下鼠标时如何消除按钮焦点的任何建议?我获取焦点和按钮 ID 的代码。

void Dlg::OnTimer(...)
{
CWnd * pFocus = GetFocus();
int btnID = 0;
if (pFocus != NULL && pDialog->IsChild(pFocus))
    btnID = pFocus->GetDlgCtrlID();

// Carry on my button pressed activity
Buttonpressed();
}

所以基本上我得到了正确的按钮按下,我可以使用上面给出的 Buttonpressed() 函数执行所需的操作。现在我的问题是,一旦按下该按钮,它就会获得焦点,即使在我离开鼠标并移出按钮区域后焦点仍然存在。由于这种行为,如果我在按钮区域之外单击,应用程序仍然认为我在鼠标区域并按下按钮。有没有一种方法可以在鼠标移出按钮区域后移除焦点,然后在它位于按钮区域时再次将焦点重新带回?

期待您的建议。

4

0 回答 0