Win32 控件篇(3)
2011-03-20 22:58 Clingingboy 阅读(2252) 评论(0) 编辑 收藏 举报
6.11 如何在编辑框中追加文本
- 用SetWindowText重新设置文本
- 用SetSel重新设置文本长度,然后用ReplaceSel替换文本的局部文本
void CDemoDlg::OnTest1()
{
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT);
CString strText = _T("");
//获得当前文本
pEdit->GetWindowText(strText);
strText += _T("ABC1");
//设置追加后的文本
pEdit->SetWindowText(strText);
}
void CDemoDlg::OnTest2()
{
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT);
int nLength = pEdit->GetWindowTextLength();
//选定当前文本的末端
pEdit->SetSel(nLength, nLength);
//l追加文本
pEdit->ReplaceSel(_T("ABC2"));
}
6.12 如何在编辑框中实现多行显示
在每行文本结束追加空格符\r\n
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT);
CString strText = _T("");
for (int n = 0; n < 10; n++)
{
CString strTemp = _T("");
strTemp.Format(_T("Line%d"), n);
strText += strTemp;
if (n < 10 - 1)
{
strText += _T("\r\n");
}
}
pEdit->SetWindowText(strText);
6.13 如何限制编辑框输入文本的长度
文本的总长度是变的,但文本的字体是变化的,所以要以总长度除以每个字符的长度
TEXTMETRIC tm;
CDC* pDC = m_ctrlEdit.GetDC();
pDC->GetTextMetrics(&tm);
m_ctrlEdit.ReleaseDC(pDC);
//获得编辑框的格式化矩形
CRect rect;
m_ctrlEdit.GetRect(&rect);
m_ctrlEdit.LimitText(rect.Width() / tm.tmAveCharWidth);
6.14 如何限制编辑框只能输入数字
在OnChar事件中判断输入字符的编码
void CDemoEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
//判断字符是否为数字
if ((nChar < '0') || (nChar > '9'))
{
if (nChar != VK_BACK)
{
AfxMessageBox(_T("请输入数字。"));
return;
}
}
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
6.15 如何将编辑框中输入的字符转换为大写(小写)
调用对应的IsCharUpper和CharUpper方法或者IsCharLower和CharLower方法,然后用DefWindowProc方法处理消息
void CDemoEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
//将字符转换为大写字符
if (!IsCharUpper((TCHAR)nChar))
{
nChar = (UINT)CharUpper((TCHAR*)nChar);
}
// //将字符转换为小写字符
// if (!IsCharLower((TCHAR)nChar))
// {
// nChar = (UINT)CharLower((TCHAR*)nChar);
// }
//处理消息
DefWindowProc(WM_CHAR, nChar, MAKELPARAM(nRepCnt, nFlags));
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现