vs2013/MFC Edit控件文档编辑Tab键选中下一个括号内容

添加Edit控件,ID设为:IDC_EDIT_TEST,添加Ctrl型变量:m_eTest,添加Value型变量:m_csTest。
重写PreTranslateMessage消息处理函数,拦截键盘消息"VK_TAB"。
BOOL MyEdit::PreTranslateMessage(MSG* pMsg)
{
	CWnd* pWnd = GetDlgItem(IDC_EDIT_TEST);
	if (pMsg->message == WM_KEYDOWN && WM_KEYFIRST <= pMsg->message && pMsg->message <= WM_KEYLAST&&pWnd && pWnd->GetSafeHwnd() == pMsg->hwnd)
	{
		UINT iKey = (UINT)pMsg->wParam;
		switch (iKey)
		{
			case VK_TAB:
			{
					   UpdateData(TRUE);
					   CPoint pt=m_eTest.GetCaretPos();
					   int curPos = m_eTest.CharFromPos(pt);
					   int iStart = LOWORD(curPos);//当前字符串位置
					   int iEnd = -1;

					   iStart = m_csTest.Find('[', iStart);
					   if (iStart > 0)
					   {
						   iEnd = m_csTest.Find(']', iStart);
					   }
					   if (iEnd >0)
					   {
						   m_eTest.SetSel(iStart+1, iEnd, true);
						   return true;
					   }
					   return false;
			}
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值