如何检测窗口已经最大化?

时间:2013-10-02 13:21:47

标签: c++ c windows winapi

我有我的申请和第三方申请。我需要知道第三方应用程序的窗口已经最大化。有什么方法可以知道吗?
起初,我认为我可以使用自己的回调函数来处理此窗口的事件。

SetWindowLong(hwnd, GWL_WNDPROC, (LONG)WindowProc);

但是此功能失败并显示“拒绝访问”错误。这种情况发生了。在窗口中更改您不拥有的内容并不是很明智。

那我该怎么办?

2 个答案:

答案 0 :(得分:1)

当窗口即将被最小化或最大化时,您实际上可以得到通知。您需要使用SetWindowsHook过程来安装和监听WH_CBT_Hook。

以下是有关WIndowsHooks的一般信息:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/Windowing/Hooks/AboutHooks.asp

这是一个线程,向您展示如何在VB中做一些熟悉的事情(对于WH_Mouse_Hook):

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=581752&SiteID=1

希望这有帮助,

答案 1 :(得分:0)

使用GetWindowPlacement功能。确保在调用GetWindowPlacement之前将WINDOWPLACEMENT的length成员设置为sizeof(WINDOWPLACEMENT)。

如果窗口最大化,则返回的WINDOWPLACEMENT结构的showCmd字段应等于SW_MAXIMIZE(3)。