我弹出一个人家已经封装好的对话框,它里面的消息传递我一点都不知道 ,它上面有一个派生的CStatic类,上面画了3x3的9个格子,通过鼠标我点击第4个格子,它旁边的一个静态文本会显示“4”
我现在的目的是不能用鼠标,而是自己用程序控制模拟鼠标(用sendmessage),即给第4个格子发送wm_lbuttondown和wm_lbuttonup事件,我下面方法都试过了,可是那个静态文本一直显示初始的“1”,好像就没反应
1,给那个派生的CStatic类 窗口发送鼠标按下、弹起事件
2,给对话框发送鼠标按下、弹起事件
(说明一下,我的鼠标单击位置应该没算错,因为我用SetCurPos可以看到鼠标放的位置和我预想的一样,发送消息的位置是相对于我要发送窗口的左上角)
请大家帮我想想我还应该给哪个窗口发送事件啊,或是大家认为我还应该发送什么事件才能得到我用鼠标实现的效果

解决方案 »

  1.   

    1.用SetCursorPos把鼠标移动到那个位置
    2.然后用 SendInput 模拟鼠标按下,弹起:
    INPUT ip;
    //mouse down
    ip.type=INPUT_MOUSE;
    ip.mi.dx=0;
    ip.mi.dy=0;
    ip.mi.mouseData=0;
    ip.mi.dwFlags=MOUSEEVENTF_LEFTDOWN;
    ip.mi.time=0;
    ip.mi.dwExtraInfo=0;
    SendInput(1,&ip,sizeof(INPUT));
    //mouse up
    ip.type=INPUT_MOUSE;
    ip.mi.dx=0;
    ip.mi.dy=0;
    ip.mi.mouseData=0;
    ip.mi.dwFlags=MOUSEEVENTF_LEFTUP;
    ip.mi.time=0;
    ip.mi.dwExtraInfo=0;
    SendInput(1,&ip,sizeof(INPUT));
      

  2.   

    请问INPUT这个类在哪个头文件里呢,我看msdn是在winuser.h里面,它不认啊
      

  3.   

    我加了WinAble.h它又认了
    只是我用mouse_event事件或是用SendInput模拟鼠标了,对我那个对话框都没反应,它还是一如既往的显示‘1’,好郁闷啊,我就差这一步了,求救啊,还有什么办法啊
      

  4.   

    呵呵,想起来了,那个 INPUT 不用包含什么文件的。你在 stdafx.h 里 加入一个宏:#define _WIN32_WINNT 0x0500
      

  5.   

    这个SendInput是真实模拟鼠标点击,如果你用SendInput没有用的话,那应该就是这地方用鼠标点也没有用。 你可以搞一个按钮试试在下面用SendInput按一下。
      

  6.   

    vc2005我不熟悉,既然vc2005是完全面向对象的,那这种处理完全可以不用消息,继承CStatic建立新类,可以增加一些处理功能
    mfc及win32编程,使用sendmessage,请确认一下,你的消息是否发送到预定目标。如果没有那就是句柄没传对
      

  7.   

    呵呵,做出来了,我用的mouse_event,只是点击‘确定’按钮时又用sendmessage,最后都改成mouse_event就可以了,发现mouse_event比sendmessage在模拟鼠标时候好用啊,又学到东西了,谢谢大家的帮助哦^-^