我向一个对话框中的按钮发送一个BM-CLICK消息是否和向对话框发送一个WM-LBTUUTONDOWN消息是效果相同的?如果有区别在什么地方?
而且,我做试验,后一种方法怎么都不行,我发送的消息的LPARAM参数是按Y高字,X低字算的一个数字,X,Y在按钮上(内),相对坐标,问题是否在这里?

解决方案 »

  1.   

    不一样.
    BN_CLICKED消息是发送给按钮窗口的,而WM-LBTUUTONDOWN是发送给对话框窗口的.
    ::SendMessage(HWnd hWnd ,MSg msg,WPARAM wParam,LPARAM lParam)
    中第一个参数就是发送消息的目的窗口,你把消息发送到对话框,按扭是永远收不到这个消息的
      

  2.   

    不啊,我发送给对话框的是WM-LBUTTONDOWN消息啊。还是说,即使是这个消息也要直接发给按钮?但我想实现的是不用去获得各个子窗口,就是在某个坐标点一下鼠标左键。
      

  3.   

    不一样的
    BN_CLICKED消息也有WM_LBTUUTONUP消息的
      

  4.   

    我想实现的是不用去获得各个子窗口,就是在某个坐标点一下鼠标左键。
    你可以计算出目标Button的屏幕坐标,在其中选个位置,然后
    SetCursorPos(x,y);
    mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
    mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
      

  5.   

    一个CLICK消息 ==按下消息+释放消息
      

  6.   

    那我对空白的地方发送一个DOWN消息为什么就是有效的?为什么发不到按钮上?
    要一个DOWN ,一个UP 吗?
      

  7.   

    在对话框的BN-CLICKED中,我写了句MESSAGEBOX,然后在一个按钮的响应函数中,向对话框发送了DOWN消息,MESSAGEBOX也出来了,说明发个DOWN消息是有用的,但为什么把DOWN消息点设置到另外一个按钮上,没作用呢?
      

  8.   

    哦,错了,是对话框的DOWN响应函数,对话框没有BN-CLICKED。
      

  9.   

    LPARAM MAKELPARAM(
        WORD wLow,
        WORD wHigh
    );
    用它看看,x-low,y-high另外,如果是屏幕坐标要把它转换成客户坐标
      

  10.   

    屏幕坐标要把它转换成客户坐标
    有这样的API函数。