作者:紫百合1990_950 | 来源:互联网 | 2023-09-08 16:18
单行编辑框常用组合:WS_CHILD|WS_VISIBLE,然后再加上凹陷的WS_EX_CLIENTEDGE样式,但是Create中添加WS_EX_CLIENTEDGE不会生效
多行编辑框常用组合:WS_CHILD|WS_VISIBLE|ES_MULTILINE
必须在Create后通过ModifyStyleEx添加,还不能通过ModifyStyle
m_keyEdit.Create(WS_VISIBLE|WS_CHILD, LINE_EDIT_RECT, &m_dataGroup, IDC_KEY_EDIT);
m_keyEdit.ModifyStyleEx(0,WS_EX_CLIENTEDGE, SWP_FRAMECHANGED);
所有样式如下:
// 超出边界水平滚动
ES_AUTOHSCROLL// 允许垂直滚动但没有滚动条
ES_AUTOVSCROLL// 文本居中
ES_CENTER// 左对齐文本
ES_LEFT// 小写字母显示所有字符
ES_LOWERCASE// 多行编辑框
ES_MULTILINE// 控件失去焦点时防止编辑控件隐藏所选内容
ES_NOHIDESEL// 仅允许在编辑控件中输入数字
ES_NUMBER// 输入的字符进行ANSI到OEM再到ANSI的转换,已过时
ES_OEMCONVERT// 显示*代替输入的字符
ES_PASSWORD// 只读
ES_READONLY// 右对齐
ES_RIGHT// 大写字母显示
ES_UPPERCASE// 通过回车而不是默认按钮插入换行符
ES_WANTRETURN
常见问题解决:
1.不断刷新CEdit内容时,无法正常浏览内容,每次SetWindowText光标都会回到最开始,并且滚动条也会到最开始
// 提前获取滚动条位置
int vScrollPos = m_edit->GetScrollPos(SB_VERT);// 更新CEdit内容
// ……// 设置滚动条到之前状态
m_edit->SetScrollPos(SB_VERT, vScrollPos);
// 设置视图到之前状态
m_edit->LineScroll(vScrollPos);