有时就是不响应的,我也遇到过。
如果那是主窗口,试试发WM_QUIT消息。

解决方案 »

  1.   

    试试
    ::PostMessage(hActiveWnd,WM_CLOSE,NULL,NULL);
      

  2.   

    3种情况
    1。消息处理里面对WM_CLOSE没有按照你的预计处理(如果是你自己写的消息proc建议检测)
    2。你的hActiveWnd不是你的目标句柄
    3。你用了wndframe,WM_CLOSE会被发到mainframe窗体去。
      

  3.   

    void OnHotKey(int KeyID)
    {
    HWND atvw;
    LRESULT ret;
    if(KeyID==HkID)
    {
    atvw=GetTopWindow(NULL);
    // ??atvw=GetActiveWindow();??
    ret=SendMessage(atvw,WM_CLOSE,0,0);
    }
    }
    我知道了,可能是我得到活动窗口句柄的方法不对,我用GetActiveWindow()得到的句柄总是0,为什么。我试着用GetTopWindow()可是也好象有点问题,并且位于最顶端的窗口未必就是当前活动的窗口(例如RealPlayer总是位于最前面)
      

  4.   

    PostMessage(hActiveWnd,WM_DESTROY,NULL,NULL)
      

  5.   

    我用SPY++看了一下,目标窗口的确收到了WM-CLOSE的消息,可为什么它们还是不关闭呢?