我想禁止鼠标选中CEDIT里面的内容(包括ctrl+'A'),这个该怎么做?

解决方案 »

  1.   

    控件设置成Enable = false
      

  2.   

    如果disable不够的话,子类化这个CEdit,然后屏蔽所以你不希望的操作
      

  3.   

    蓉蓉,做不到的。readonly也不行,enable也不行。没有办法啦。
      

  4.   

    用子类化的方法,自己写一个Edit类,继承自CEdit,加入你自己的处理即可。
      

  5.   

    你可以试试在PreTranslateMessage中拦截Ctrl+A,并屏蔽。
      

  6.   

    if(pMsg->message==WM_KEYDOWN)
    { if(GetAsyncKeyState(VK_LCONTROL)&&(pMsg->wParam=='A'))
    {
     return TRUE;
    }
    }可以屏蔽Ctrl+A
      

  7.   

    虽然屏蔽Ctrl+A,但是鼠标还是可以选中。要禁止鼠标选中的话,Disable那个控件才可以。但是你又需要键盘输入,那你只有自己写一个Edit类了。
      

  8.   

    subclass 了。早跟你说了。
      

  9.   

    楼上的CTRL键有左右两个,另,我想搂住的意思是想不被选中,也就是要屏蔽CEdit::SetSel函数,我觉得是否在派生类中重载一下setsel函数就ok了呢? 没有试验,不知道可行不
      

  10.   

    setsel是重载的吗........只有subclass,别无他法。或者自己写一个新的CXEdit类。其实在subclass类里面,拦截所有的鼠标消息,过滤不需要的键盘消息,应该可以吧。没做过,呵呵。
      

  11.   

    为什么不用CRichEditCtrl
    HideSelection
    用此函数隐藏试试
      

  12.   

    子类化这个CEdit类./******************SubEdit.h************************************/
    #if !defined(AFX_SUBEDIT_H__999D8DB4_CF48_4857_B86B_D5EEABE0279F__INCLUDED_)
    #define AFX_SUBEDIT_H__999D8DB4_CF48_4857_B86B_D5EEABE0279F__INCLUDED_#if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    // SubEdit.h : header file
    ///////////////////////////////////////////////////////////////////////////////
    // CSubEdit windowclass CSubEdit : public CEdit
    {
    // Construction
    public:
    CSubEdit();// Attributes
    public:// Operations
    public:// Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CSubEdit)
    //}}AFX_VIRTUAL// Implementation
    public:
    virtual ~CSubEdit(); // Generated message map functions
    protected:
    //{{AFX_MSG(CSubEdit)
    afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
    //}}AFX_MSG DECLARE_MESSAGE_MAP()
    };///////////////////////////////////////////////////////////////////////////////{{AFX_INSERT_LOCATION}}
    // Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_SUBEDIT_H__999D8DB4_CF48_4857_B86B_D5EEABE0279F__INCLUDED_)
    /******************SubEdit.cpp**********************************/
    // SubEdit.cpp : implementation file
    //#include "stdafx.h"
    #include "Wgj.h"
    #include "SubEdit.h"#ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif/////////////////////////////////////////////////////////////////////////////
    // CSubEditCSubEdit::CSubEdit()
    {
    }CSubEdit::~CSubEdit()
    {
    }
    BEGIN_MESSAGE_MAP(CSubEdit, CEdit)
    //{{AFX_MSG_MAP(CSubEdit)
    ON_WM_CHAR()
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////
    // CSubEdit message handlersvoid CSubEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
    {
    // TODO: Add your message handler code here and/or call default
    if(nChar>=0x30 && nChar<=0x39 || nChar=='.' || nChar==0x08)//0x08=回退键
    {
    CEdit::OnChar(nChar, nRepCnt, nFlags);
    //只允许特定的按键通过
    // nChar=nChar+0x10;
    // DefWindowProc(WM_CHAR,(WPARAM)nChar,(LPARAM)(nRepCnt|(nFlags<<16)));
    //此行却可以改变一个输入字符为其它字符
    }
    }
      

  13.   

    用CStatic吧.
    标签控件, 不能选定了吧! 哈哈哈....