编辑框实现Ctrl+A、Ctrl+C、Ctrl+V、Ctrl+X

编辑框可写入或显示大量文本信息,编辑框默认不支持全选功能,但支持Ctrl+C、Ctrl+V、Ctrl+X,因此为了快速实现复制、粘贴功能,或者实现一些自定义的快捷键,需要截获键盘消息,通过重载virtual BOOL PreTranslateMessage(MSG* pMsg)处理鼠标和键盘消息。

SendDlgItemMessage(int nIDDlgItem, UINT Msg, WPARAM wParam, LPARAM lParam)该函数需要传入控件ID,在前面通过获取鼠标焦点,可以避免直接填写控件ID。

SHORT WINAPI GetKeyState( int nVirtKey);通过获取不同的key状态可以自定义试下多键组合


BOOL CMFCApplication1Dlg::PreTranslateMessage(MSG * pMsg)
{
	if (pMsg->message == WM_KEYDOWN)
	{
		BOOL b = GetKeyState(VK_CONTROL) & 0x80;
		CWnd *pActiveWnd = GetFocus();
		DWORD nWndID = 0;
		if (pActiveWnd)
		{
			nWndID = pActiveWnd->GetDlgCtrlID();//获取光标所在的框
		}
		if (b && (pMsg->wParam == 'a' || pMsg->wParam == 'A'))
		{
			SendDlgItemMessage(nWndID, EM_SETSEL, 0, -1);
			return TRUE;
		}
	}
	return CDialog::PreTranslateMessage(pMsg);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值