消息: WM_ACTIVATE
参数:
fActive = LOWORD(wParam); // activation flag
fMinimized = (BOOL)HIWORD(wParam); // minimized flag
hwndPrevious= (HWND)lParam; // window handle
fActive 参数表明窗口是被激活还是被取消。该信息保存在 wParam 的低阶字中,可以取以下的值:
WA_CLICKACTIVE 通过鼠标单击激活了该窗口
WA_ACTIVE 通过鼠标以外的工具(如键盘)激活了该窗口
WA_INACTIVE 取消该窗口的激活
fMinimized 参数表明窗口是否为最小化状态。该信息保存在 wParam 的高阶字中,非0表示最小化,0表示不是最小化
hwndPrevious 参数表示其他窗口句柄,根据fActive参数的不同含义不同,fActive为激活时hwndPrevious表示上一个激活的窗口句柄,
fActive为失去激活时hwndPrevious表示下一个激活的窗口句柄,注意hwndPrevious可能为NULL,
该信息保存在 lParam中。
示例代码:
代码作用为当窗口失去激活时判断下一个窗口是否是同类的窗口,是的话设置一个标志
void CThreadDlg::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
{
CDialog::OnActivate(nState, pWndOther, bMinimized);
if (WA_INACTIVE == nState)//失去激活
{
if (NULL != pWndOther)
{
if (pWndOther->IsKindOf(RUNTIME_CLASS(CThreadDlg)))
{
m_bFirstCall = false;
}
}
}
else //激活
{
m_bFirstCall = true;
}
}