给CEdit添加文本,但是不想让它自动滚动

oceanh 2005-03-16 11:40:03
代码:

CEdit *pEdit;
int len;
CString message;
...
len = pEdit->GetWindowTextLength();
pEdit->SetSel(len, len, FALSE);
pEdit->ReplaceSel(message);
...

CEdit有滚动条,这段代码能在CEdit末尾添加文本,文本添加后能自动滚动到最末尾,我想能控制它不自动滚动?怎么办?
我改了 pEdit->SetSel(len, len, TRUE); 没用,还是自动滚屏
...全文
390 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
oceanh 2005-03-21
  • 打赏
  • 举报
回复
up

会用到消息反射机制吗?

oceanh 2005-03-17
  • 打赏
  • 举报
回复
发现只要具有垂直滚动条 然后用 pEdit->ReplaceSel(tmp);来添加文本,无论ES_AUTOVSCROLL 怎么设,CEdit都会自己滚动,我现在肯定是需要滚动条的,但是希望在添加文本的时候控制滚动与否。
oceanh 2005-03-16
  • 打赏
  • 举报
回复
改了 还是不行
I_Love_CPP 2005-03-16
  • 打赏
  • 举报
回复

::SetWindowLong(pEdit->GetSafeHwnd(), GWL_STYLE, pEdit->GetStyle() | ~WS_HSCROLL);
I_Love_CPP 2005-03-16
  • 打赏
  • 举报
回复
::SetWindowLong(pEdit->GetSafeHwnd(), GWL_STYLE, pEdit->GetExStyle() | ~WS_HSCROLL);
oceanh 2005-03-16
  • 打赏
  • 举报
回复
多谢楼上的大哥
按照你提供的方法:
::SetWindowLong(pEdit->GetSafeHwnd(), GWL_STYLE, pEdit->GetExStyle() | ~ES_AUTOHSCROLL);好像也不灵,屏幕似乎没有及时刷新

还有我在PreCreateWindow中一直设置的是不自动滚动的
BOOL CMyAppView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs

BOOL bPreCreated = CEditView::PreCreateWindow(cs);
cs.style &= ~(ES_AUTOVSCROLL | ES_AUTOHSCROLL | WS_HSCROLL);
return bPreCreated;
}
I_Love_CPP 2005-03-16
  • 打赏
  • 举报
回复
"我是想在运行时来控制CEdit的自动滚动,而不是创建时。
这样可以让用户来决定自动滚屏还是手动滚屏"
---------------------------------------------------------
用这个修改属性:
LONG SetWindowLong(pEdit->GetSafehWnd(),
GWL_STYLE,
....
);


MSDN:
To change this style after the control has been created, use SetWindowLong.

oceanh 2005-03-16
  • 打赏
  • 举报
回复
用pEdit->SetSel(); 的时候,用两次,一次选的前一点,让它滚回去,再一次用的时候,选择你要的那段。
---------------------------------------------------------------------
楼上的这种方法不是最终解决之道呀,况且我只是想界面在接受文本的时候,用户控制(比如单击右键就停止滚动,再单击就开始自动滚屏),里面的滚动条位置应该很自然的停在它原始的位置上,否则可能会闪屏的。
张佩 2005-03-16
  • 打赏
  • 举报
回复
用pEdit->SetSel(); 的时候,用两次,一次选的前一点,让它滚回去,再一次用的时候,选择你要的那段。
oceanh 2005-03-16
  • 打赏
  • 举报
回复
我是想在运行时来控制CEdit的自动滚动,而不是创建时。
这样可以让用户来决定自动滚屏还是手动滚屏
I_Love_CPP 2005-03-16
  • 打赏
  • 举报
回复
你创建*pEdit时,
要注意属性:
virtual BOOL Create(
DWORD dwStyle, // ~ES_AUTOHSCROLL
const RECT& rect,
CWnd* pParentWnd,
UINT nID
);


15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧