duilib CEditUI 禁止输入中文字符,禁止复制粘贴

1、CEditUI 禁止使用中文输入法

在 CEditUI::DoEvent 函数中,添加代码:

if(m_bOnlyEnglishChar && m_pWindow && m_pWindow->GetHWND() != NULL) 
      ImmAssociateContext(m_pWindow->GetHWND(), NULL);  //禁用中文输入法,只可输入键盘上的现有字符
在 CEditUI::SetAttribute 函数中添加:
else if (_tcscmp(pstrName, _T("englishChar")) == 0)
    SetEnglishChar(_tcscmp(pstrValue, _T("true")) == 0);
//m_bOnlyEnglishChar 为自定义bool变量,在SetAttribute 函数中设置,不再赘述。


2、CEditUI 不显示默认的右键菜单

在 CEditWnd::HandleMessage 函数中,添加代码:

     else if (uMsg == WM_CONTEXTMENU) 
        {
            if (m_pOwner && !m_pOwner->IsShowContextMenu()) 
            {
                bHandled = TRUE;
                return lRes;
            }
            bHandled = FALSE;
        }

在 CEditUI::SetAttribute 函数中添加:

else if (_tcscmp(pstrName, _T("rightMenu")) == 0)
    SetShowContextMenu(_tcscmp(pstrValue, _T("true")) == 0); 
    void CEditUI::SetShowContextMenu(bool b) //默认右键菜单
    {
        m_bShowContextMenu = b;
    }
    bool CEditUI::IsShowContextMenu() //是否显示默认右键菜单
    {
        return m_bShowContextMenu;
    }

3、CEditUI  中禁止粘贴 (即:不能使用 ctrl + v)

 在函数 CEditWnd::HandleMessage 中,添加代码:

        else if (uMsg == WM_PASTE) //右键“粘贴”,或ctrl+v
        {
            if (m_pOwner && !m_pOwner->IsCanPaste()) //不能粘贴
                return lRes;
            bHandled = FALSE; //默认粘贴功能
        }    

在 CEditUI::SetAttribute 函数中添加:

else if (_tcscmp(pstrName, _T("paste")) == 0)
    SetCanPaste(_tcscmp(pstrValue, _T("true")) == 0); 
    void CEditUI::SetCanPaste(bool b)
    {
        m_bCanPaste = b;
    }
    bool CEditUI::IsCanPaste()
    {
        return m_bCanPaste;
    }

通过以上三步,可以实现 CEditUI 中只能输入键盘上的符号,禁止输入中文全角字符,也不能复制粘贴其他来源的中文字符。

原文地址:https://www.cnblogs.com/pjl1119/p/7544003.html