我在QQ桌球游戏的上层建立了一个窗口,当在我建的窗口上按下鼠标左键,收到WM_LBUTTONDOWN消息时
便关闭这个窗口,这时游戏窗口便成为最上层的窗口,为何此时再松开鼠标左键时,
QQ游戏窗口收不到WM_LBUTTONUP这个消息?如果游戏窗口收到,它肯定会响应,因为我把这个消息::PostMessage给它时它是响应的

解决方案 »

  1.   

    那你就把这个消息::PostMessage给它
      

  2.   

    可能被上层窗口抓去了,用Spy++查看一下消息
    最好自己PostMessage,这样可以控制
      

  3.   

    可能是系统中会加一个状态符判断。只有在收到LBUTTONDOWN这个消息的时候,才会响应BUTTONUP。就像你要点击某个按钮,当鼠标在按钮上按下,移开按钮范围松开,是不响应按钮button消息的。
    只是个人猜测啊!
      

  4.   

    谢谢大家的回复!QQ桌球窗口收到WM_LBUTTONDOWN的时候开始移动力度条,收到WM_LBUTTONUP的时候击球,
    我在QQ桌球的上层窗口上复制了QQ桌球的dc,在上面进行瞄准,用户按下左键时关闭窗口,我在窗口关闭之前把WM_LBUTONDOWN PostMessage给QQ桌球窗口,这时用户应该只需要松开左键就可以击球了,但是这个消息QQ桌球窗口收不到,而且我的窗口已经关闭了,也收不到这个消息。我现在的解决方案是WM_LBUTTONDOWN时把自己的窗口MoveWindow (0,0,0,0),隐藏起来,并且SetCapture,收到WM_LBUTTONUP的时候PostMessage给QQ桌球窗口。
    但这样做还有个小问题:隐藏窗口后,光标不能正常QQ桌球的光标,移动一下鼠标才能正常显示。这个能不能通过给窗口发个消息的方法解决?
      

  5.   

    嘿嘿
    我新手 在这现请教各位高手,关于手机群发信息软件的问题
    想自制一个用自己的手机数据线连接电脑的群发短信的软件,我在网上搜了一个SmsTest测试程序,单个人发可以,不知道如何群发?怎样修改我的代码。先谢谢各位前辈了!
    发送代码如下:
    void CSenddlg::OnSendOk()
    {
        // TODO: 在此添加控件通知处理程序代码
        UpdateData(TRUE);
        CEdit* strContent = (CEdit*)GetDlgItem(IDC_SEND_EDIT);
        strContent->GetWindowText(m_strContent);
        m_strNumber.GetWindowText(strNumber);
        
        if(strNumber.IsEmpty ()||strNumber.GetLength() < 11)
        {
            AfxMessageBox("请输入正确的号码!");
            m_strNumber.SetFocus();
            m_strNumber.SetEditSel(-1, 0);
            return;
        }
        // 检查短消息内容是否空,或者超长
        CString strUnicode;
        WCHAR wchar[1024];
        int nCount = ::MultiByteToWideChar(CP_ACP, 0, m_strContent, -1, wchar, 1024);
        if(nCount <= 1)
        {
            AfxMessageBox("请输入消息内容!");
            strContent->SetFocus();
            strContent->SetSel(-1, 0);
            return;
        }
        else if(nCount > 70)        // 我们决定全部用UCS2编码,最大70个字符(半角/全角)
        {
            AfxMessageBox("消息内容太长,无法发送!");
            strContent->SetFocus();
            strContent->SetSel(-1, 0);
            return;
        }    if(AfxMessageBox("确定发送吗?", MB_YESNO) == IDYES)
        {
            SM_PARAM SmParam;
            TRACE("State=SmParam\n");
            memset(&SmParam, 0, sizeof(SM_PARAM));
                    
            // 去掉号码前的"+"
            if(m_strSmsc[0] == '+')  m_strSmsc = m_strSmsc.Mid(1);
            if(strNumber[0] == '+')  strNumber = strNumber.Mid(1);        // 在号码前加"86"
            if(m_strSmsc.Left(2) != "86")  m_strSmsc = "86" + m_strSmsc;
            if(strNumber.Left(2) != "86")  strNumber = "86" + strNumber;
                    
            TRACE("State=填充短消息结构\n");
            // 填充短消息结构
            strcpy_s(SmParam.SCA, m_strSmsc);
            strcpy_s(SmParam.TPA, strNumber);
            strcpy_s(SmParam.TP_UD, m_strContent);
            SmParam.TP_PID = 0;
            SmParam.TP_DCS = GSM_UCS2;
                    
            TRACE("State=发送短消息\n");
            // 发送短消息
            p->PutSendMessage(&SmParam);
        }
        
        strContent->SetFocus();
        strContent->SetSel(-1, 0);        UpdateData(FALSE);
    }