我有CRichEditCtrl对象,它是只读的(文本是用于读取的,不允许修改)。我想提供与CRichEditCtrl对象显示的文本与鼠标选择文本的功能。
以下代码用于捕获鼠标左键按下和按下事件
BOOL CReportFormView::PreTranslateMessage(MSG* pMsg)
{
if (m_EditNs->GetFocus()!=NULL)
{
switch (pMsg->message)
{
case WM_LBUTTONDOWN:
return TRUE;
case WM_LBUTTONUP:
return TRUE;
}
}
}现在寻找一些代码来写在case块,这将突出显示选定的文本。我想知道是否有可用于CRichEditCtrl对象的API,可以帮助跟踪用户按下鼠标左键并释放的位置
发布于 2015-02-20 16:04:38
您可以使用成员函数CString strText = m_myRichEditCtrl.GetSelText();或其他一些成员函数。像GetSel()只是一个建议。
发布于 2015-02-20 21:58:06
我认为您需要使用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
https://stackoverflow.com/questions/28623445
复制相似问题