读书人

怎么在窗口的WM_WINDOWPOSCHANGED消息

发布时间: 2012-01-29 21:39:32 作者: rapoo

如何在窗口的WM_WINDOWPOSCHANGED消息响应函数里面知道该窗口跳到顶端去了
如何在窗口的WM_WINDOWPOSCHANGED消息响应函数里面知道该窗口跳到顶端去了

一个对话框被另一个程序调BringWindowToTop函数跳到最顶端,
或者被鼠标键盘等操作点到顶端
如何让它跳出来时做点事情

[解决办法]
GetForegroundWindow() ??
枚举窗口EnumWindows()得到第一个窗口判断是否和你指定的窗口HWND相等?
[解决办法]
在OnWindowPosChanged应该这样就可以吧?
if (!(lpwndpos->flags & SWP_NOACTIVATE))
{
}

SWP_NOACTIVATE Does not activate the window. If this flag is not set, the window is activated and moved to the top of either the topmost or non-topmost group (depending on the setting of the hWndInsertAfter parameter).

hwndInsertAfter
Specifies the position of the window in Z order (front-to-back position). This member can be a handle to the window behind which this window is placed, or can be one of the special values listed with the SetWindowPos function.

[解决办法]
HWND desWnd = ::GetDesktopWindow();
HWND topWnd = ::GetTopWindow(desWnd);
if(topWnd == this->m_hWnd)
{
//说明自己在顶层
}

读书人网 >VC/MFC

热点推荐