我想写一个类似按钮的操作:就是当在按钮上单击鼠标左键后,不放开,无论鼠标移到屏幕的那哪个位置(不在当前窗口区域内)放开鼠标左键时,使终是那个按钮接收的消息。这种功能如何实现,就是说我有个图片,当鼠标左键在上面单击后,改变图案,然后无论鼠标在哪里释放,那个图片变回原来的图片。
(不能负加DLL,也不能用外来的控件--包控windows自带的控件如按钮等)

解决方案 »

  1.   

    可以封装这个按钮类,然后重写消息响应函数,让它可以接受非显示区的鼠标消息
    WM_NCLBUTTONDOWN
    WM_NCLBUTTONUP
    WM_NCLBUTTONDBLCLK
    WM_NCMBUTTONDOWN
    WM_NCMBUTTONUP
    WM_NCMBUTTONDBLCLK
    WM_NCRBUTTONDOWN
    WM_NCRBUTTONUP
    WM_NCRBUTTONDBLCLK
    Windows程序设计里有相应的介绍
      

  2.   

    CYourButton::OnLButtonDown(....)
    {
        SetCapture(); //  让该按钮获得输入焦点
    }CYourButton::OnLButtonUp(....)
    {
        ReleaseCapture();  //  释放该按钮获得的输入焦点     // 做其它处理
    }
      

  3.   

    从CBitmapButton类继承,
    处理LBUTTONDOWN,LBUTTONUP 消息。