WM_ACTIVATE窗口激活消息

消息: 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;
	}
}

你可能感兴趣的:(Windows编程,WM_ACTIVATE)