怎么实现象QQ搜索联系人那个CEdit控件那样的功能,就是当我们没用鼠标去单击它的时候,那个CEdit控件上就有一些文字...而当我们去鼠标去单击它的时候,那些文字就消失了...而当我们鼠标去单击别的东西的时候,CEdit控件上面的文字又有了...请问大家这个功能是怎么实现的???谢谢...

解决方案 »

  1.   

    不用自绘
    单击时设定一个字符串
    WM_KILLFOUCS时清除这个字符串即可
      

  2.   

    谢了...我知道怎么弄了..
    补充你说的,除了你说的当鼠标点击对话框时,给CEdit编辑框发送WM_KILLFOCUS消息..然后在OnKillFocus函数中添加处理函数之外...还要去添加CEdit编辑框的鼠标左键点击消息..然后在此消息函数里去发送WM_SETFOCUS这个消息...让编辑框再次获得焦点..这样编辑框才能不断被使用,总之,谢谢回帖人:simoreg...
      

  3.   

    还有我想问 ..可以令CEdit编辑框一开始就失去焦点吗??可以的话要怎么弄..
      

  4.   

    1、
    单击时设定一个字符串
    WM_KILLFOUCS时清除这个字符串不行吗?
    有必要你给自己发WM_KILLFOCUS吗?2、
    一开始就失去焦点吗?
    我猜你是想:当鼠标在编辑框上时触发一个动作,不管鼠标点不点,当鼠标离开时,再触发一个动作,是么?
    如果是这样,你可以:
    在OnMouseMove里打开鼠标跟踪,如下:
    TRACKMOUSEEVENT tme;
    tme.cbSize = sizeof(tme);
    tme.dwFlags = TME_HOVER | TME_LEAVE;
    tme.dwHoverTime = 1;
    tme.hwndTrack = m_hWnd;
    BOOL boRet = _TrackMouseEvent(&tme);
    然后,你就可以响应WM_MOUSEHOVER,WM_MOUSELEAVE消息了
    需要手动添加:如下:
    ON_MESSAGE(WM_MOUSEHOVER,OnMouseHover)
    ON_MESSAGE(WM_MOUSELEAVE,OnMouseLeave) afx_msg LRESULT OnMouseLeave(WPARAM wParam,LPARAM lParam);
    afx_msg LRESULT OnMouseHover(WPARAM wParam,LPARAM lParam);
      

  5.   

    回:simoreg。。
    不是你说的那个意思,我想弄的就是现在我们正在用的QQ那个显示"搜索联系人,网页信息和问问答案"的CEdit编辑框...这个功能我差不多就可以实现了 ...我唯一还没实现的功能就是当程序运行的时候它没有失去焦点..也就是说程序运行的时候它处于编辑的状态..我就是想让程序运行的时候不处于编辑的状态..象QQ一样显示一些文字.但不处于编辑状态...要实现这功能应该是让CEdit编辑框失去焦点吧???不是这样子的话,还有其它方法吗???
    你说的这个鼠标在控件中的移动和离开控件的消息应该在我这个功能上用不到.....???