有如下情形:
    在程序某处会显示一段文字,单击的时候不响应,双击的时候即响应可以修改该文字,但是edit貌似没有这功能,所以在static的地方create一个edit然后覆盖在static上,当修改完成后将值传给static再销毁edit.
但是新问题又来了,怎么判断edit的焦点的是否还在,比如正在输入值的时候,鼠标点击了其他程序,那么此时焦点应该在其它程序上了(任意时候,焦点只要一个我这样理解不知是否有问题),那么此时应该通知edit当输入完成的情况处理,即传值后销毁.但是我不知道怎么判断焦点是否已经转移(当然可以利用定时器对edit进行判断,不过方法貌似笨了点),还有其他方法吗?如果还有不明白的,可以看一下QQ的个性签名那地方(QQ那里是单击即可修改),当你正在输入的时候,你再去点一下其他程序,此时QQ个性签名就认为已经修改完成然后发布了,我也想做一个相同效果的不过是双击修改,请问怎么做呢?
首先谢谢各位的热心帮助了!

解决方案 »

  1.   

    afx_msg void OnMouseMove(UINT nFlags, CPoint point);
    afx_msg LRESULT OnMouseLeave(WPARAM wParam, LPARAM lParam);
    afx_msg LRESULT OnMouseHover(WPARAM wParam, LPARAM lParam);
      

  2.   


    我觉得是不是应该添加EN_KILLFOUCS消息?
      

  3.   


    我的edit是动态创建的,不知道怎么去加入EN_KILLFOUCS消息,是不是WM_KILLFOUCS这个消息啊?
      

  4.   

    根据你的新需求,你需要从MFC的CEdit类派生你自己的Editl类,然后在你的这个派生的类里面去重载这些鼠标、焦点的消息响应函数
      

  5.   

    直接用CEdit实现这个功能很麻烦
      

  6.   

    调用 SetCapture 无论鼠标在哪点击 都会抄一份给你在这里面判断鼠标是不是在Edit里面
      

  7.   

    1#楼、3#楼、4#楼也都是在你从MFC的CEdit类派生你自己的Editl类的基础上做的
      

  8.   


    谢谢各位!问题已经解决,重载OnCommand函数,判断对话框的焦点即可!if(HIWORD(wParam)==EN_KILLFOCUS)//失去焦点则在下面处理传值销毁的代码即可!
    {
    ......
    }