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 中只能输入键盘上的符号,禁止输入中文全角字符,也不能复制粘贴其他来源的中文字符。