用 GetRichEditCtrl().GetFirstVisibleLine()可以得到第一个可见行,如何得到最后一个可见行?谢谢!
解决方案 »
- CAsyncSocket::Send 怎样才能发送信息给多个客户端?
- 如何禁用和启用toolbar的某个按钮?
- 造成服务端Close_Wait的原因有哪些?
- 这代码怎么样才能处理JPG,GIF等图片,我发现一句话,可有可无
- 大四了,要找工作了。我想到上海去发展,请各位兄弟介绍一些好的公司啊
- 热爱网络编程,且打算从事或正在从事防火墙,NAT,VPN的朋友进来一下吧(非提问)
- 请教做过相关程序的仁兄!使用mscomm控件不能正常接受硬件发送来的数据应如何解决??数据被控件自动分成不规则的几部分!
- 求助!!!!!!!
- 有关installshield的进程的问题,求大拿指教
- 全由字母组成的文件名,一定和法吗?先答先得,考考你
- VC++能基于对话框作图吗?
- OPENGL超级宝典 源码编译错误
int nLine = m_edit.GetFirstVisibleLine();
CDC* pDC = m_edit.GetDC();
TEXTMETRIC tm;
VERIFY(pDC->GetTextMetrics(&tm));
m_edit.ReleaseDC(pDC);
CRect rect;
m_edit.GetWindowRect(&rect);
int cx = tm.tmHeight;
int nTotal = m_edit.GetLineCount()-1;
int nCount = 0;
CString strText(_T("")); nCount = rect.Height() / cx + 1 + nLine + 1;
if(nLine >= nTotal)
{
strText.Format(_T("%d"), nTotal);
}
else
{
strText.Format(_T("%d"), nCount);
}
AfxMessageBox(strText);try it
::PostMessage(m_edit.GetSafeHwnd(), WM_VSCROLL, SB_BOTTOM, 0);
//当前可见的第一行
const int nFirstVisibleLine = m_cRichEdit.GetFirstVisibleLine();
//可见的第一行的第一个字符的index
const DWORD dwCharIndex = (DWORD)m_cRichEdit.LineIndex(nFirstVisibleLine);
//获取这个字符相对于richedit客户区坐上角的坐标
const DWORD dwPos = m_cRichEdit.SendMessage(EM_POSFROMCHAR,dwCharIndex,0);
const short nXPos = (short)LOWORD(dwPos);
const short nYPos = (short)HIWORD(dwPos);
const int nLineCount = m_cRichEdit.GetLineCount(); for(int i = nFirstVisibleLine ; i < nLineCount ; i++)
{
DWORD dwCurIndex = 获取第i行的第一个字符的index;
short nCurYPos = 获取 dwCurIndex 相对于左上角的坐标;
if(nCurYPos > 客户区的height)
{
return 第i行不可见,第i-1行可见
}
else
{
do nothing
}
}