我有CRichEditCtrl对象是只读的(文本用于读取,不允许修改)。我想为使用CRichEditCtrl对象显示的文本提供带鼠标的文本选择功能。
以下代码正在努力捕获左鼠标按钮的事件 - DOWN& UP
BOOL CReportFormView::PreTranslateMessage(MSG* pMsg)
{
if (m_EditNs->GetFocus()!=NULL)
{
switch (pMsg->message)
{
case WM_LBUTTONDOWN:
return TRUE;
case WM_LBUTTONUP:
return TRUE;
}
}
}
现在正在寻找一些代码块来编写将突出显示所选文本的代码块。我想知道是否有任何可用于CRichEditCtrl对象的API有助于跟踪用户按下鼠标左键并释放的位置
答案 0 :(得分:0)
您可以使用成员函数CString strText = m_myRichEditCtrl.GetSelText();
或其他一些成员函数。像GetSel()
一样只是一个建议。
答案 1 :(得分:0)
我认为您需要使用EM_CHARFROMPOS消息。恩。某种形式:
POINTL pt { x,y }; // ... screen coordinates to test relative to edit
DWORD info = m_EditNS->SendMessage(EM_CHARFROMPOS, 0, pt);
int charIndex = LOWORD(info);
int line = HIWORD(info);
之后,使用正常选择方法设置选择。
https://msdn.microsoft.com/en-us/library/windows/desktop/bb761566(v=vs.85).aspx