我在对话框上放了一个编辑框,编辑框的属性是只读的,当鼠标在编辑框上点击时,在编辑框里还是会出现光标。
如何才能让光标不出现在编辑框里呢?请高手指点。

解决方案 »

  1.   

    当编辑框得到焦点后,不让它显示光标
    ShowCaret
    详细查看MSDN
      

  2.   

    我试一下 HideCaret好像不行
      

  3.   

    你派生一个新的Edit,在它的WM_SETCURSOR或WM_SETFOCUS中,HideCaret()。不行的话,在WM_LBUTTONDOWN,WM_LBUTTONUP中都加上。
      

  4.   

    BOOL CYourDlg::OnInitDialog()
    {
    ........................
    ........................
    .....................
    ((CEdit *)GetDlgItem(IDC_EDIT))->HideCaret();
    .............
    ............
    }再响应EDIT的EN_SETFOCUSG事件
    void CYourDlg::OnSetfocusEdit() 
    {
    // TODO: Add your control notification handler code here
    ::SendMessage(GetDlgItem(IDC_EDIT)->GetSafeHwnd(),WM_KILLFOCUS,NULL,NULL);
    }
      

  5.   

    不过如果是EDIT控件是只读的话只要
    响应EDIT的EN_SETFOCUSG事件 
    void CYourDlg::OnSetfocusEdit() 

    // TODO: Add your control notification handler code here 
    ::SendMessage(GetDlgItem(IDC_EDIT)->GetSafeHwnd(),WM_KILLFOCUS,NULL,NULL); 
    }
      

  6.   

    设置 Disabled 属性不可以吗?
    不知道是否符合LZ需求
      

  7.   

    给你一个方法吧。
    派生一个CEdit类,响应=EN_SETFOCUS方法
    在相应函数中加入DestroyCaret();  //删除插入符
    OK
      

  8.   

    HideCaret(hEdit);     //hEdit是编辑框句柄
      

  9.   

    可以把 Edit 控件的 Disabled 属性设置为 true 即可,有两种方法:1.在设计时直接在属性里就设置了2.代码实现如下://其中 IDC_EDIT1 是窗体中Edit的控件ID
    //1.添加消息映射
    ON_EN_SETFOCUS(IDC_EDIT1, OnSetfocusEdit1)//2.在消息函数中处理
    void CSohoADlg::OnSetfocusEdit1() 
    {
    // TODO: Add your control notification handler code here
    HWND hwnd = ::GetDlgItem(this->m_hWnd, IDC_EDIT1);
    CWnd* pWnd = CWnd::FromHandle(hwnd);
    pWnd->ModifyStyle(0, pWnd->GetStyle() | WS_DISABLED);
    }以上,设置后,测试成功!
      

  10.   

    简单方法 楼上已讲   设置 Disabled 属性另外 14楼  好 顶&赞