2011-02-11 40 views
3

我有一个程序,可以启用最小化任务栏的通知区域。为了实现这一点,我需要一种可靠的方式来检测用户何时最小化了应用程序。如何检测我的应用程序何时最小化?

如何在C++应用程序中使用Windows API?

+0

我只想问一下,如果WM_Destroy是退出什么将最小化? – 2011-02-11 06:25:36

+0

您是否想要让程序在用户点击最小化按钮时将自己最小化到通知区域? – 2011-02-11 06:27:40

+0

是的,它是我想知道的在C + + – 2011-02-11 06:29:33

回答

3

当用户最小化窗口(或者使用框的标题栏,或者通过选择“最小化”,从系统菜单选项),您的应用程序将收到一个WM_SYSCOMMAND message。该消息的wParam参数将包含值SC_MINIMIZE,该值指示正在请求的系统命令的特定类型。在这种情况下,你不关心lParam

因此,您需要设置消息映射,以侦听WM_SYSCOMMAND消息,并将wParam设置为SC_MINIMIZE。一旦收到这样的消息,你应该执行你的代码,以最小化你的应用程序到任务栏通知区域,并返回0(表示你已经处理了消息)。

我不确定你使用的是什么GUI框架。示例代码对于不同的工具包可能会有很大的不同。以下是你可能会在一条直线的Win32 C应用程序使用哪些:

switch (message) 
{ 
case WM_SYSCOMMAND: 
    if ((wParam & 0xFFF0) == SC_MINIMIZE) 
    { 
     // shrink the application to the notification area 
     // ... 

     return 0; 
    } 
    break; 
} 
0

我想你正在寻找WM_SIZE。当你得到这个,检查wParam得到具体信息。这是MSDN页面。

WM_SIZE

0

您可以检查从GetClientRect返回的区域大小 - 如果零它的最小化,为我工作,但可能不会在所有情况下工作。

0

这就是IsIconic应该确定,但它不一致对我来说。 (哦,为了一致的方式来确定这...)

相关问题