CXXXXDlg::OnSysCommand(SC_MINIMIZE,0);

解决方案 »

  1.   

    当然不行,OnSysCommand响应的是WM_SYSCOMMAND消息。
    你不妨试试SendMessage()参数指定为最小化或者移动
    等的消息ID即可。
      

  2.   

    最小化
    SendMessage(WM_SYSCOMMAND, SC_MINIMIZE, MAKELPARAM(point.x, point.y));
    最大化
    SendMessage(WM_SYSCOMMAND, SC_MAXIMIZE, MAKELPARAM(point.x, point.y));
    恢复
    SendMessage(WM_SYSCOMMAND, SC_RESTORE, MAKELPARAM(point.x, point.y));
      

  3.   

    一般这种判断放在,WM_NCMOUSELDOWN里,原参数就有point.x, point.y呵呵,绝对可用,别忘给分
      

  4.   

    SendMessage(hwnd,WM_SYSCOMMAND,SC_MINIMIZE,NULL);
      

  5.   

    好啊,可以也
    随便问一下,发送SC_MOVE的时候,老是要按空格键才能移动
    有没有办法不要空格键就移动的?
      

  6.   

    请看MSDN说明:
    WM_SYSCOMMAND messages not handled by the application must be passed on to OnSysCommand. Any command values added by an application must be processed by the application and cannot be passed to OnSysCommand.
    说明普通按钮不能响应WM_SYSCOMMAND消息。
      

  7.   

    用鼠标单击窗口标题条以外区域移动窗口
     
    移动标准窗口是通过用鼠标单击窗口标题条来实现的,但对于没有标题条的窗口,
    就需要用鼠标单击窗口标题条以外区域来移动窗口。有两种方法可以达到这一目标。  方法一:当窗口确定鼠标位置时,Windows向窗口发送WM_NCHITTEST消息,可以处
    理该消息,使得只要鼠标在窗口内,Windows便认为鼠标在标题条上。这需要重载
    CWnd类处理WM_NCHITTEST消息的OnNcHitTest函数,在函数中调用父类的该函数,
    如果返回HTCLIENT,说明鼠标在窗口客户区内,使重载函数返回HTCAPTION,
    使Windows误认为鼠标处于标题条上。  下例是使用该方法的实际代码:  UINT CEllipseWndDlg::OnNcHitTest(CPoint point)   
    {  
    // 取得鼠标所在的窗口区域  
    UINT nHitTest = CDialog::OnNcHitTest(point);  
    // 如果鼠标在窗口客户区,则返回标题条代号给Windows  
    // 使Windows按鼠标在标题条上类进行处理,即可单击移动窗口  
    return (nHitTest==HTCLIENT) ? HTCAPTION : nHitTest;  
    }  方法二:当用户在窗口客户区按下鼠标左键时,使Windows认为鼠标是在标题条上,
    即在处理WM_LBUTTONDOWN消息的处理函数OnLButtonDown中发送一个wParam参数为
    HTCAPTION,lParam为当前坐标的WM_NCLBUTTONDOWN消息。  下面是使用该方法的实际代码:  void CEllipseWndDlg::OnLButtonDown(UINT nFlags, CPoint point)   
    {  
    // 调用父类处理函数完成基本操作  
    CDialog::OnLButtonDown(nFlags, point);  
    // 发送WM_NCLBUTTONDOWN消息  
    // 使Windows认为鼠标在标题条上  
    PostMessage(WM_NCLBUTTONDOWN,  
    HTCAPTION,   
    MAKELPARAM(point.x, point.y));  
    }