在editctrl 中限制字符 在edit控件中只允许输入数字和英文状态下逗号,允许快捷键ctrl+x,ctrl+c,ctrl+v,现在我重载了onchar()方法,放行数字,英文逗号,和退格键,不知道如何添加快捷键ctrl+x,ctrl+c,ctrl+v,希望高手帮忙!先谢过! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ctrl+x,ctrl+c,ctrl+v是edit控件自动支持的,你试试 在OnChar重载函数中放行CTRL_C,CTRL_V,CTRL_X虚拟键void CXX::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) { if ((m_strValidChars.IsEmpty()) || ((-1 != m_strValidChars.Find(static_cast<TCHAR> (nChar))) || (nChar == VK_BACK) || (nChar == CTRL_C) || (nChar == CTRL_V) || (nChar == CTRL_X))) CEdit::OnChar(nChar, nRepCnt, nFlags);} 4楼的高手,你的方法我试了,不好用啊,没有CTRL_C和其他几个,是不是给宏定义了啊??宏定义的内容是什么?我vk_back是取的值,不知道ctrl+c和其他几个能不能也进行取值运算,要是取值的话是ctrl+c的和值还是什么呢?? 重载PreTranslateMessage()函数BOOL CMyCtrl::PreTranslateMessage(MSG* pMsg) { if (pMsg->message == WM_KEYDOWN) { switch (pMsg->wParam) { case VK_CTROL: { // 用 GetKeyState 来查看按键是否按下,如果按下,再判断C/V/X是否按下 if((GetKeyState(VK_C)<0)) {//处理 } else if((GetKeyState(VK_V)<0)) {//处理 } else if((GetKeyState(VK_X)<0)) {//处理 } } break; default: } return CMyCtrl::PreTranslateMessage(pMsg); }LZ看看这样行不行 重载WM_CLEAR(delete键), WM_COPY(ctrl+c), WM_CUT(ctrl+x),WM_PASTE(ctrl+v) 的消息处理 我这样处理void CYEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: Add your message handler code here and/or call default /*8-backspace 3-ctrl+c 22-ctrl+v 24-ctrl+x 26-ctrl+z*/ if (nChar != 8 && nChar != 3 && nChar != 22 && nChar != 24 && nChar != 26) { if(nChar < 48|| nChar > 57) return; } CEdit::OnChar(nChar, nRepCnt, nFlags);} CFromView的滚动条显示问题 接着问 在C#中调用VC++的DLL是否会影响其性能及功能。 Rebar工具条的问题,解决立即给分........ 求一份简单的字符串加密解密代码 提问的技巧 浏览器插件开发 请教高手们一个工具栏的问题,急!急!急!急!急! error C2018: unknown character '0xa1' 这是什摸错? libevent大并发下的问题 如何让动态的ListBox在其他控件前面? AllocConsole 创建的控制台怎么执行一个外部命令
{
if ((m_strValidChars.IsEmpty()) || ((-1 != m_strValidChars.Find(static_cast<TCHAR> (nChar))) ||
(nChar == VK_BACK) || (nChar == CTRL_C) || (nChar == CTRL_V) || (nChar == CTRL_X)))
CEdit::OnChar(nChar, nRepCnt, nFlags);}
BOOL CMyCtrl::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_KEYDOWN)
{
switch (pMsg->wParam)
{
case VK_CTROL:
{
// 用 GetKeyState 来查看按键是否按下,如果按下,再判断C/V/X是否按下
if((GetKeyState(VK_C)<0))
{//处理
}
else if((GetKeyState(VK_V)<0))
{//处理
}
else if((GetKeyState(VK_X)<0))
{//处理
}
}
break;
default:
}
return CMyCtrl::PreTranslateMessage(pMsg);
}LZ看看这样行不行
的消息处理
{
// TODO: Add your message handler code here and/or call default
/*8-backspace 3-ctrl+c 22-ctrl+v 24-ctrl+x 26-ctrl+z*/
if (nChar != 8 && nChar != 3 && nChar != 22 && nChar != 24 && nChar != 26)
{
if(nChar < 48|| nChar > 57)
return;
}
CEdit::OnChar(nChar, nRepCnt, nFlags);
}