当前位置: 首页 > 工具软件 > xctrl > 使用案例 >

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

毋修为
2023-12-01

编辑框可写入或显示大量文本信息,编辑框默认不支持全选功能,但支持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);
}

 

 类似资料: