MFC CEdit 中不能使用ctrl+v进行粘贴解决办法
2015-11-05 13:29
447 查看
原因是因为没有处理Ctrl+V 的消息响应。
解决办法:
重写 PretranslateMessage函数。在PretranslateMessage中截获CEdit响应Ctrl+V 消息,然后截获ctrl+v的消息,重新处理Ctrl+V 消息。
参考http://www.myexception.cn/vc-mfc/743352.html
例如:
IDC_SALES_ORDER_ID_EDIT 是编辑框的ID
BOOL CXxxMgrView::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
if (GetDlgItem(IDC_SALES_ORDER_ID_EDIT)->m_hWnd == pMsg->hwnd )
{
if (pMsg->message == WM_KEYDOWN)
{
if ( (pMsg->wParam == _T('C') || pMsg->wParam == _T('X') || pMsg->wParam == _T('V')) && (::GetKeyState(VK_CONTROL) & 0x8000) )
{
::TranslateMessage(pMsg);
::DispatchMessage(pMsg);
return(TRUE);
}
}
}
return CFormView::PreTranslateMessage(pMsg);
}
解决办法:
重写 PretranslateMessage函数。在PretranslateMessage中截获CEdit响应Ctrl+V 消息,然后截获ctrl+v的消息,重新处理Ctrl+V 消息。
参考http://www.myexception.cn/vc-mfc/743352.html
例如:
IDC_SALES_ORDER_ID_EDIT 是编辑框的ID
BOOL CXxxMgrView::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
if (GetDlgItem(IDC_SALES_ORDER_ID_EDIT)->m_hWnd == pMsg->hwnd )
{
if (pMsg->message == WM_KEYDOWN)
{
if ( (pMsg->wParam == _T('C') || pMsg->wParam == _T('X') || pMsg->wParam == _T('V')) && (::GetKeyState(VK_CONTROL) & 0x8000) )
{
::TranslateMessage(pMsg);
::DispatchMessage(pMsg);
return(TRUE);
}
}
}
return CFormView::PreTranslateMessage(pMsg);
}
相关文章推荐
- 找不到 libxml2.dylib 库
- [leetcode299]Bulls and Cows
- 达内学习日志Day43:AddAccountServlet(通过JDBC连接)
- windows下WNMP(windows+nginx+mysql+php)配置
- xUtils框架—DbUtils
- PHP图片验证码的实现-包括前后台页面
- VIM使用技巧总结
- MySQL查看用户权限的两种方法
- 关于IOS9中NSURLConection的同步或异步发送请求过时问题。
- HTTP Live Streaming直播(iOS直播)技术分析与实现
- Oracle 存储过程及函数中游标+动态的sql处理
- 非MFC的界面编程 - 复选框CHECKBOX
- 南阳理工556 最大公约数
- bom基础
- Cordova or Xamarin 用.net开发IOS和Android程序
- 在数据库中加一个字段并给予排序
- 南阳理工556 最大公约数
- LeetCode /Dynamic Programming/Climbing Stairs
- 骗子QQ 14258588665 买ig骗我2600
- Shell中将程序控制台输出复制到文件