A程序已获取到B窗口的句柄,用下面的语句让还原到最小化以前的状态:
::ShowWindow(hWnd, SW_SHOW//SW_RESTORE,SW_SHOWNA,SW_SHOWNOACTIVATE,SW_SHOWNORMAL);B窗口先前处于最大化状态,然后最小化,上面程序结果让B窗口恢复到还原状态,如何才能还原到最大化状态呢?注意,肯定不能用SW_SHOWMAXIMIZED,因为如果窗口最小化以前本身就处理还原状态呢?我要的结果是还原到最小化以前的状态。相当于在状态栏上点鼠标,此时窗口被还原,还原的状态是最小化以前的状态。

解决方案 »

  1.   

    ::SendMessage(hWnd, WM_SYSCOMMAND,SC_RESTORE,0);
      

  2.   

    不行,楼上可以试试对IE执行OpenIcon操作,方法是:
    将IE最大化,然后最小化,最后执行OpenIcon,结果IE是先被还原,再将窗口提到前面,根本不是我要的效果,按照我的要求,IE应该是被还原到最大化状态!
      

  3.   

    towangk(倒之)
    我是要将窗口还原到最小化以前的状态,不是通常意义的还原,即:SC_RESTORE!!!
    效果就像你用鼠标在任务栏上点击一样,窗口将还原到最小化以前的状态。
      

  4.   

    if(GetWindowLong(hWnd, GWL_STYLE)&WS_MAXIMIZE) ShowWindow(hWnd, SW_SHOWMAXIMIZED);
    else OpenIcon(hWnd);
      

  5.   

    to chehw(chehw)
    窗口都处于最小化状态,你if(GetWindowLong(hWnd, GWL_STYLE)&WS_MAXIMIZE)这个判断不是永远为假,还不是相当于OpenIcon(hWnd);
      

  6.   

    我要从最小化状态还原到最小前的状态!!!
    最小化前的状态肯定是存在的,只是不知道能不能取得到,因为用鼠标在状态栏上点击的时候,窗口就是还原到最小化以前的状态,而不是SC_RESTORE状态!!!
      

  7.   

    SW_SHOWNOACTIVATE 消息
    SW_SHOWNOACTIVATE 
    Displays a window in its most recent size and position. The active window remains active. 然后再 ACTIVATE 它(给它焦点)
      

  8.   

    好像行了!我被MSDN忽悠了!MSDN中说:
    SW_SHOWNOACTIVATE
    Displays a window in its most recent size and position. This value is similar to SW_SHOWNORMAL, except the window is not actived.因为我试了SW_SHOWNORMAL不行,所以就没有试SW_SHOWNOACTIVATE了!