CEdit 中CEdit静态文本上下滚动 滚轮、SetSel 的使用
来源:互联网 发布:linux less more 编辑:程序博客网 时间:2024/05/16 06:05
首先介绍CEdit几个函数:
第一: LineFromChar 的作用: 仅用于多行编辑框,参数如果不填写,则默认是-1,直接调用,会返回当前光标所在的行数,MFC 是从0 开始算起的。
参数如果填写,则返回指定字符索引所在行的行索引(从零开始编号)。
第二: LineIndex的作用 : 仅用于多行编辑框,用来获得指定行的开头字符的字符索引,如果指定行超过了编辑框中的最大行数,
该函数将返回-1。参数nLine是指定了从零开始的行索引,如果它的值为-1,则函数返回当前的插入符所在行的字符索引。
第三: SetSel 的作用 : void SetSel( DWORD dwSelection, BOOL bNoScroll = FALSE );
void SetSel( int nStartChar, int nEndChar, BOOL bNoScroll = FALSE );
CEdit的成员函数,用来选择编辑框中的正文。参数dwSelection的低位字说明了选择开始处的字符索引,
高位字说明了选择结束处的字符索引。如果低位字为0且高位字节为-1,那么就选择所有的正文,如果低
位字节为-1,则取消所有的选择.参数bNoScroll的值如果是FALSE,则滚动插入符并使之可见,否则就不滚动.
参数nStartChar和nEndChar的含义与参数dwSelection的低位字和高位字相同.
由于最近写一个小项目,遇到了静态文本的上下滚动问题,小小的研究了一下。
滚轮上下滚动 2 中办法:
第一种:响应OnMouseWheel消息。
BOOL CDlgReply::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
// TODO: Add your message handler code here and/or call default
return CDialog::OnMouseWheel(nFlags, zDelta, pt);
}
在上述代码中,zDelta的值如果是 负的则 向 下进行滚动, 相反向上滚动。
第二种:很多人会发现OnMouseWheel 消息经常进不去,解决办法是,直接重写 PreTranslateMessage 函数,
代码: 下面的代码 可以实现 CEdit 中 静态文本 随着滚轮的上下滚动,也进行滚动
lineIndex 是当前光标所在的行数,
m_edit_recontext 是控件的对象。
charindex 获取当前行开头字符的字符索引。
BOOL CDlgXXXX::PreTranslateMessage(MSG* pMsg)
{
if ( pMsg->message == WM_MOUSEWHEEL )
{
short zDelta = (short)HIWORD(pMsg->wParam);
short xPos = (short)LOWORD(pMsg->lParam);
short yPos = (short)HIWORD(pMsg->lParam);
CPoint pt;
GetCursorPos(&pt);
ScreenToClient(&pt);
if( m_edit_recontext.GetSafeHwnd() )
{
CRect rectControl;
m_edit_recontext.GetWindowRect(&rectControl);
ScreenToClient(&rectControl);
if( rectControl.PtInRect(pt) )
{
int lineIndex = m_edit_recontext.LineFromChar();
if( zDelta < 0 )
{
lineIndex += 1;
}
else
{
lineIndex -= 1;
}
int charindex = m_edit_recontext.LineIndex(lineIndex);
m_edit_recontext.SetSel(charindex,charindex);
}
return TRUE;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
- CEdit 中CEdit静态文本上下滚动 滚轮、SetSel 的使用
- CEdit的SetSel函数
- 关于CEdit或者CWnd的setSel问题。
- CEdit的自动滚动
- CEdit的文本对齐
- CRichEditCtrl系列讲堂8 解决CEdit/CRichEdit中SetSel错位或者位置判断错误的问题
- CEdit文本上下居中(垂直居中)
- 上下居中的cedit密码框
- CEdit
- CEdit
- CEdit
- CEdit
- CEdit
- CEdit
- CEdit
- CEDIT使用
- CEDIT使用
- 读取CEdit中某一行数据的方法 CEdit::LineLength
- 以自动化测试撬动遗留系统
- 手把手教你在Windows端搭建Redmine项目管理软件
- 移动应用中的流设计
- php案例01—在页面中打印服务器的时间
- VC用ADO访问数据库全攻略
- CEdit 中CEdit静态文本上下滚动 滚轮、SetSel 的使用
- Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(新手教程)
- CentOS6.4 SVN-APACHE配置
- 哈希表的使用(上)
- Git 版本管理工具(一)
- phpMyAdmin 导入sql语句失败或者导入不全时的修改
- Matrix Transformer zoj3646 (二分图最大匹配)
- IT人士十大不良饮食习惯及改进建议
- hdu 1142 A Walk Through the Forest【Dijkstra+dfs求最短路条数】